我只是在学习如何使用文件IO,可能我错了。我需要创建一个城市名称及其人口密度列表并将其写入文件,我可以使用for循环将列表以标准输出格式正确打印出来,但无法将其写入文件中。就像我在使用printf语句时所说的那样,它可以正常工作,但是(fopen,“ w”)fprintf无法正常工作。我要去哪里错了?
printf("Create new file name:\n");
scanf("%s", outfile);
fp = fopen(outfile, "w");
for(i=0;i<10;i++){
fprintf("%s %.2f\n", veg[i].name, density );
}
fclose(fp);
我希望该文件填充城市列表,但我却是程序崩溃了。我收到此错误消息。
“不兼容的指针类型,将'char [10]'传递给'FILE *'类型的参数(又名'struct __sFILE *')”
答案 0 :(得分:1)
您需要指定要在fprintf()调用中写入的文件。
fprintf(outfile,"%s %.2f\n", veg[i].name, density );
这是文档:https://en.cppreference.com/w/c/io/fprintf
您还需要返回fopen是否失败。
if (fp != NULL)
{
printf("File created successfully!\n");
}
else {
printf("Unable to create file.\n");
exit(EXIT_FAILURE);
}
请注意,如果使用Visual Studio,则必须在必须指定字符串大小的地方使用fprintf_s()
。