首页 > 解决方案 > fscanf 不保存行 - C

问题描述

我正在尝试从打开的文件指针中扫描一行,传递给函数的是标准输入。当我打印出输入的值时,我得到(空)。任何想法为什么 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;
}

标签: cscanf

解决方案


您必须在使用input 分配内存fscanf(infile,"%s",input);

fscanf(infile,"%s",input);要求fscanf读取一个字符串并将其写入input. 由于input尚未分配值,更不用说指向为此分配的内存的值,因此未定义行为。


推荐阅读