目标是在“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()”中调用它时,它在运行程序后不显示任何内容。
你已经将l
声明为char
指针,但你永远不会为它分配内存。
char *l = malloc(sizeof(*l));
if(l == NULL){
printf("Could not allocate memory for character buffer.\n");
return;
}
确保你在函数结束时使用free(l);
。
编辑:
您可能还想在\n
中添加换行符(printf()
)。