fscanf не сохраняет строку - C - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь отсканировать строку из открытого указателя файла, переданного в функцию stdin.Когда я распечатываю значение ввода, я получаю (ноль).Есть идеи, почему fscanf не сохраняет значение?Это код - также показано ниже:

char *ReadLineFile(FILE *infile){
    char *input;
    char buf[MAX];
    //check if file pointer is at end of file
    if(feof(infile))
        return NULL;
    //scan from file
    fscanf(infile,"%s",input);
    printf("%s",input);
    input = (char *)malloc(strlen(input)+1);
    //handle memory allocation errors
    if (input == NULL){
        printf("Error allocating memory\n");
        return "error";
    }
    fclose(infile);
    return input;
}

1 Ответ

0 голосов
/ 28 января 2019

Вы должны выделить память для input до , используя fscanf(infile,"%s",input);.

fscanf(infile,"%s",input); просит fscanf прочитать строку и записать ее в input.Поскольку input не было присвоено значение, не говоря уже о значении, которое указывает на выделенную для этого память, поведение не определено.

...