Avatar billede susrn Nybegynder
17. september 2003 - 22:07 Der er 16 kommentarer og
1 løsning

sprintf funktionen

Jeg er ikke så gode venner med nævnte funktion
ifølgende kald er jeg itvivl om hvad
rec%d?RNavn=%s&Tekst=%s&Overskr=%s&Q=3 
bliver til?

d+=sprintf(d, "<a href=\"/scripts/test.exe/Menu%d?RNavn=%s&Tekst=%s&Overskr=%s\" OnClick=\"frmUpdate('/scripts/test.exe/rec%d?RNavn=%s&Tekst=%s&Overskr=%s&Q=3');\">", m, Recept, Tekst, Navn, m, Recept, Tekst, Navn);
Avatar billede soreno Praktikant
17. september 2003 - 22:11 #1
Det bliver formentlig til garbage..


d+=sprintf(d, ..)

er en dum konstruktion.

Returværdien for sprintf er antallet af chars som er skrevet til bufferen (d). Altså vil du lægge antallet af chars til start positionen af arrayet..

Hvis du vil samle chararrays skal du bruge
strcat
Avatar billede susrn Nybegynder
17. september 2003 - 22:19 #2
det et kode jeg har overtaget og der er for meget af det til at jeg kan ændre det! Og programmet fungerer efter hensigten så garbage tror jeg nu ikke det bliver ;)
Men rec bliver efterfulgt af ..?RNavn=%s&Tekst=%s&Overskr=%s&Q=3...hvad?
Avatar billede soreno Praktikant
17. september 2003 - 22:21 #3
Det nemmeste var nok at udskrive indholdet af d efter funktionskaldet.

printf("%s\n", d);
Avatar billede arne_v Ekspert
17. september 2003 - 22:22 #4
Hm.

Hvis d er en char*, så peger den først på hvor der skal skrive
og bagefter på hvor langt man er kommet.

Det kan måske godt bruges fornuftigt.
Avatar billede arne_v Ekspert
17. september 2003 - 22:23 #5
Den giver d en værdi udfra formatet - %d bliver erstattet af et heltals
argument - %s bliver erstattet af en streng (C streng = nul termineret char array).
Avatar billede susrn Nybegynder
17. september 2003 - 22:37 #6
er det en sammenblanding af assignment og evaluering? så man kunne sige
rec?RNavn&Tekst&Overskr&Q 
men det giver nu heller ikke meget mening for mig
Avatar billede arne_v Ekspert
17. september 2003 - 22:41 #7
Hvis du undrer dig over hvad linket gør, så kalder det et CGI script
scripts/test.exe med /Menu<tal> som path og et antal form felter
"udfyldt" (web-serveren modtager det samme som med en form submit med get action
og udfyldte felter).
Avatar billede susrn Nybegynder
18. september 2003 - 08:02 #8
tak, vil I ikke have points?
Avatar billede arne_v Ekspert
18. september 2003 - 08:05 #9
jo tak
Avatar billede arne_v Ekspert
18. september 2003 - 11:14 #10
Søren blev vist snydt !?
Avatar billede soreno Praktikant
18. september 2003 - 18:29 #11
Gør ikke noget
Avatar billede arne_v Ekspert
18. september 2003 - 18:51 #12
Med hensyn til +sprintf, så tror jeg at følgende eksempel er illustrativt:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void test1(char *s,int n,int *a)
{
  int i;
  char tmp[17];
  strcpy(s,"");
  for(i=0;i<n;i++)
  {
      strcat(s,"a[");
      strcat(s,itoa(i,tmp,10));
      strcat(s,"]=");
      strcat(s,itoa(a[i],tmp,10));
      strcat(s,"\n");
  }
  return;
}

void test2(char *s,int n,int *a)
{
  int i;
  char *p;
  p=s;
  for(i=0;i<n;i++)
  {
      p+=sprintf(p,"a[%d]=%d\n",i,a[i]);
  }
  return;
}

int main()
{
  int a[] = { 1, 23, 456 };
  char buf1[100],buf2[100];
  test1(buf1,3,a);
  puts(buf1);
  test2(buf2,3,a);
  puts(buf2);
  return 0;
}
Avatar billede susrn Nybegynder
19. september 2003 - 18:40 #13
jeg accepterede faktisk først efter nogle timer netop for at lade soreno svare...!
Avatar billede soreno Praktikant
19. september 2003 - 18:55 #14
Jeg er i skole på den tid af dagen :-)

(Jeg kigger ikke mail/web i skoletiden !)
Avatar billede susrn Nybegynder
19. september 2003 - 21:53 #15
ingen smalle steder her, jeg har points nok at give af og det er altid dejligt når nogen bruger energi på at svare! Jeg har oprettet et spørgsmål til dig ;) http://www.eksperten.dk/spm/403482
Avatar billede arne_v Ekspert
19. september 2003 - 21:55 #16
søren>

Det hedder ikke "i skole" men "på uni".

:-)
Avatar billede soreno Praktikant
20. september 2003 - 07:01 #17
Jajaja, men med alle de timer vi har allokeret til undervisning/øvelser osv. føles det som en alm. skole hvor "eleven" bare har ansvaret for at lære noget.

Man kunne vel også kalde det for "arbejde på hjernefabrikken" :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester