目标是在“ 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()”中调用它时,在运行该程序后它什么也不显示。
答案 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()
。