我的程序需要接受用户输入并将其保存到外部文件以供将来参考。这是代码的基本概述。将用户输入字符串写入文件C
void newActivity(FILE *foutput) {
char name[31];
char description[141];
finput = fopen("activities.txt", "a");
printf("\n What is the name of your activity (up to 30 characters):\n");
fgets(name, sizeof(name), stdin);
printf("\nEnter a brief description (up to 140 characters) of what %s is about:\n",
fputs(name, stdout));
fgets(description, sizeof(description), stdin);
if (finput == NULL) {
printf("\nCould not open file.");
exit(1);
}
fprintf(foutfile, "%s\n", name);
fprintf(foutfile, "%s\n", description);
fclose(foutfile)
}
当我运行一个简单的测试程序,只要求一个名字并打印这个名字,一切都很好。它看起来像这样:
int main() {
char name[50];
fprint("What is your name? ");
fgets(name, sizeof(name), stdin);
fputs(name, stdout);
return 0;
}
不像工作测试程序,我的程序不会不采取任何来自用户的输入移动到第二printf()
语句之前。它确实读取printf
语句中的字符串,但返回值为(null)
。
至于写入文件,两行fprintf
应该这样做,但我无法确认它,因为输入文本未被正确记录。
这是一个在我的main()
之外声明的函数。这是否会影响这种情况?
此外,为什么函数有无用的输入参数'finput'? –
你是用'%d'ecimal格式说明符'printf'字符串'name'和'description'。这会让你的程序调用未定义的行为。有可能与'name'和'description'有关的任何事情都被优化掉了,否则就会被抛弃。你有没有尝试过使用调试器?编辑:正如dasblinkenlight指出的那样,这不是你唯一的问题。请考虑你在写什么。 –
什么是'fprint(“你叫什么名字?”)''main()'的第3行? 'newActivity()'在哪里被调用? – user3078414