函数调用main

问题描述 投票:1回答:1

目标是在“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'中有“We are}”。写,所以它应该在运行后显示“in”,但它只在我直接在“main()”中运行代码时才会显示。当尝试在“listagem()”中运行它然后在“main()”中调用它时,它在运行程序后不显示任何内容。

c
1个回答
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())。

© www.soinside.com 2019 - 2024. All rights reserved.