falsches Format
-
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { FILE *stealerfile, *passfile; stealerfile = fopen("bla", "r"); if(stealerfile != NULL) { //In Stealerfile nach bla suchen int pos; char *filebuf; while(fscanf(stealerfile, "%s", &filebuf) != EOF) { pos = strspn( filebuf, "steam"); printf("%s",pos); } pos = strspn( filebuf, "Steam"); printf("%s",pos); printf("\n\n\n\n\n\n%s",filebuf); fclose(stealerfile); } else printf("ERROR BEIM ÖFFNEN"); passfile = fopen("steam.txt","a+"); if(passfile != NULL) { //Steamstream in Datei fclose(passfile); } }
So, versuche hiermit
while(fscanf(stealerfile, "%s", &filebuf) != EOF)
die file mit einem bestimmten Suchbegriff durchzugehen. Am schluss soll mir pos zurückgegeben werden, womit ich dann weiter mit fseek arbeiten kann. Aber ich brauch erst mal die position von dem string.
BITTE BITTE HELFT MIR, der meinte:/home/taipier/Desktop/BAckup/Brainfuck/main.c|70|Warnung: format »%s« erwartet Typ »char «, aber Argument 3 hat Typ »char ()[2024]«|
/home/saphir/Desktop/BAckup/Brainfuck/main.c|77|Warnung: format »%s« erwartet Typ »char *«, aber Argument 2 hat Typ »int«|
||=== Build finished: 2 errors, 0 warnings ===|
-
Du legst ene int-Variable pos an, rufst dann printf mit "%s" auf (das steht für String!) und übergibst aber pos, also eine int-Variable, statt einer String-Variable (char*). Natürlich meckert er da. Mach den printf-Aufruf stattdessen mit %d oder %i, dann passt das auch.
-
while(fscanf(stealerfile, "%i", &filebuf) != EOF)
Also so???
Das stimmt auch net, da gibt er mir an gleicher Stelle den Fehler aus.
/home/taipier/Desktop/BAckup/Brainfuck/nixbesonderes.c|16|Warnung: format »%i« erwartet Typ »int *«, aber Argument 3 hat Typ »char **«|
-
Du bekommst als Hinweis, das Formatzeichen in printf zu ändern, und änderst die Zeile, die fscanf enthält. Hast Du den Post von matze aufmerksam gelesen?
-
Mit meinem Beitrag hast du schon mal die Lösung. Im Anschluss würde ich dir die eingehende Lektüre der Doku (lokal oder http://www.msdn.com) empfehlen. Da ist eigentlich alles erklärt. Zum Beispiel auch, dass man für bestimmte Datentypen bestimmte Platzhalter benutzen muss.
-
Also, hier hab ich das mal alles nach int geändert, thx für den tipp, aber jetzt ist der eine Fehler immer noch da:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { FILE *stealerfile, *passfile; stealerfile = fopen("bla", "r"); if(stealerfile != NULL) { //In Stealerfile nach steamaccs suchen int pos; char *filebuf; while(fscanf(stealerfile, "%s", &filebuf) != EOF) { pos = strspn( filebuf, "steam"); printf("%i",pos); } pos = strspn( filebuf, "Steam"); printf("%i",pos); printf("\n\n\n\n\n\n%s",filebuf); fclose(stealerfile); } else printf("ERROR BEIM ÖFFNEN"); passfile = fopen("steam.txt","a+"); if(passfile != NULL) { //Steamstream in Datei fclose(passfile); } }
Dann kommt das hier:
/home/saphir/Desktop/BAckup/Brainfuck/nixbesonderes.c|16|Warnung: format »%s« erwartet Typ »char *«, aber Argument 3 hat Typ »char **«|
||=== Build finished: 1 errors, 0 warnings ===|btw. wieso msdn, bin unter linux.
-
nicht:
while(fscanf(stealerfile, "%s", &filebuf) != EOF)
sondern:
while(fscanf(stealerfile, "%s", filebuf) != EOF)
-
Oke, gesagt, getan....
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { FILE *stealerfile, *passfile; stealerfile = fopen("PC-DE-CYRIL.log", "r"); if(stealerfile != NULL) { //In Stealerfile nach steamaccs suchen int pos; char *filebuf; while(fscanf(stealerfile, "%s", filebuf) != EOF) { pos = strspn( filebuf, "steam"); printf("%i",pos); } pos = strspn( filebuf, "Steam"); printf("%i",pos); printf("\n\n\n\n\n\n%s",filebuf); fclose(stealerfile); } else printf("ERROR BEIM ÖFFNEN"); passfile = fopen("steam.txt","a+"); if(passfile != NULL) { //Steamstream in Datei fclose(passfile); } }
Segmentation fault Press ENTER to continue.
Also, i-was stimmt da nicht
-
taipier schrieb:
Also, i-was stimmt da nicht
V-leicht s-te dein "filebuf" auch t-sächlich auf einen Puffer z-en, und nicht i-wo in den S-er.
-
MFK schrieb:
taipier schrieb:
Also, i-was stimmt da nicht
V-leicht s-te dein "filebuf" auch t-sächlich auf einen Puffer z-en, und nicht i-wo in den S-er.
-
Hi,
mein einfacher Tipp wäre in diesen Fall:
Lern erst mal die Grundlagen von Pointern bzw. von allen und les die Doku zu den Funktionen ;).
fscanf sollte alle Probleme lösen
Gruß Pingu