Ich versuche, fgets() innerhalb einer Funktion namens "a_function()" auszuführen.fgets() verhält sich unerwartet außerhalb von main()
int a_function(){
char* str;
FILE *fp;
fp = fopen("./file.txt", "r");
if(NULL != fp){
fgets(str, 6, fp);
printf("%s\n", str);
}else{
printf("cannot find file\n");
return 1;
}
return 0;
}
int main(void){
a_function();
return 0;
}
Dies führt jedoch zu einem segfault, der auftritt, wenn die Funktion fgets() aufgerufen wird. Interessanterweise kann ich wörtlich meinen Code von a_function in meine main() Funktion und alles läuft gut kopieren:
#include <stdio.h>
#include <stdlib.h>
int a_function(){
return 0;
}
int main(void){
a_function();
char* str;
FILE *fp;
fp = fopen("./file.txt", "r");
if(NULL != fp){
fgets(str, 6, fp);
printf("%s\n", str);
}else{
printf("cannot find file\n");
return 1;
}
return 0;
}
Der Code über kompiliert wird:
gcc -g -std=c11 test.c -o test
Was ich hier fehlt? Ist es ein Problem mit meinem Code oder mit meinem Computer? Jede Hilfe wird geschätzt. Danke
Tipp: Wo du gesagt hast 'fgets' die Zeichenfolge zu speichern, es liest? – immibis
'str' muss malloced oder zu einem normalen char [] – Turtle