Avatar billede nomak Nybegynder
10. juni 2003 - 19:05 Der er 11 kommentarer og
1 løsning

linieskift når jeg bruger sprintf?

Hey experter..

Jeg har i min C application brugt sprintf en del gange.. Men når jeg gør det, kommer der et linieskift (?)

Det er da lidt irriterende.. Hvad kan jeg gøre ved dette?
Avatar billede soreno Praktikant
10. juni 2003 - 19:09 #1
Fjern \n fra din sprintf.

Post evt. den kode hvor det går galt.
Avatar billede nomak Nybegynder
10. juni 2003 - 19:10 #2
char cmd[300];
sprintf(cmd, "UPDATE chat_rooms SET numusers='%i' WHERE id='%i'", room[i].numusers, room[i].id);
do_sql(cmd);

det er jo netop problemet! der er ikke et \n i den..

Det jeg mener er at når jeg kalder sprintf, kommer der et liniefkift i min konsol hvor den kører programmet.. rimeligt nedern
Avatar billede soreno Praktikant
10. juni 2003 - 19:16 #3
Sært, jeg oplever ikke fænomenet.

#include <stdio.h>

int main(int argc, char **argv)
{
    char buffer[32];
    printf("før sprintf\n");
    sprintf(buffer, "vuf %s", "vuf");
    printf("efter sprintf\n");
    printf("resultat: %s\n", buffer);

    return 0;
}

output:
f°r sprintf
efter sprintf
resultat: vuf vuf
Avatar billede arne_v Ekspert
10. juni 2003 - 19:22 #4
Gæt: du har læst data ind med fgets og har ikke trunkeret
linieskift af.
Avatar billede soreno Praktikant
10. juni 2003 - 19:26 #5
Arne:

??

%i står jo for "Signed decimal integer"

Der er da ikke noget sted der kan liste sig et linieskift ind i ovenstående kode - af Nomak) ?
Avatar billede arne_v Ekspert
10. juni 2003 - 19:29 #6
Sorry - jeg læste ikke formatet - jeg troede at der var strenge
involveret.

PS: Hvorfor '' når det er tal ?
Avatar billede nomak Nybegynder
10. juni 2003 - 19:30 #7
okay har fundet ud af at det er i min funktion do_sql(); - det fatter jeg så bare endnnu mindre!

int do_sql(char buffer[400])
{
    mysql_query(mysql_handle, buffer);

    if (mysql_error(mysql_handle)) {
        printf("%s\n", mysql_error(mysql_handle));
    }

    return 1;
}
Avatar billede nomak Nybegynder
10. juni 2003 - 19:31 #8
udkommenterede do_sql(cmd); og så forsvandt de.. men det er jo ikke fedt når jeg SKAL bruge den funktion
Avatar billede arne_v Ekspert
10. juni 2003 - 19:32 #9
Der er jo et \n i den ??
Avatar billede arne_v Ekspert
10. juni 2003 - 19:43 #10
Det er den.

mysql_error returnerer "" ved ingen fejl.

"" er sand.

Og derfor skriver den et linie-skift ud !
Avatar billede arne_v Ekspert
10. juni 2003 - 19:44 #11
http://www.mysql.com/doc/en/mysql_error.html

har følgende kode:

if(mysql_error(&mysql)[0] != '\0')
{
    // an error occurred
}
Avatar billede nomak Nybegynder
10. juni 2003 - 20:54 #12
woohaa.. så blev jeg det klogere *G* Takker arne_v :)

*tror snart jeg har brugt alle mine points på ham arne* :P
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