主函数调用

时间:2019-04-28 00:45:19

标签: c

目标是在“ file.txt”中显示“} {”之间的单词。当我在main()中编写它时,它将运行,但是当我创建一个新的函数并在main中调用该函数时,它将运行代码,但仅不显示任何后记。

void listagem() {

    FILE *fp;
    char s[20],*l;

    fp = fopen("file.txt","r+");

    while((*l = fgetc(fp)) != EOF)
        {
            if (strcmp(l,"}") == 0)
            {
                fscanf(fp,"%[^{]", s);
                printf("%s", s);
                break;
            }
        }

    fclose(fp);
}

int main() {

    listagem();
}

文件的“我们在{2019年}”。 ,因此它应该在运行后显示为“ in”,但是只有当我直接在“ main()”中运行代码时才显示为“ in”。尝试在“ listagem()”中运行它,然后在“ main()”中调用它时,在运行该程序后它什么也不显示。

1 个答案:

答案 0 :(得分:0)

您已将l声明为char指针,但从未为其分配内存。

char *l = malloc(sizeof(*l));
if(l == NULL){
   printf("Could not allocate memory for character buffer.\n");
   return;
}

还要确保您在功能结束时free(l);

修改:
您可能还想在\n上添加换行符(printf()