这是在文件中写入内容的代码。
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
FILE *fp;
char ch(90);
fp = fopen("books.txt","w");
if(fp == NULL)
{
puts("Cannot open file");
}
printf("Enter lines of text:");
while(strlen(gets(ch)) > 0)
{
fputs(ch, fp);
}
fclose(fp);
}
我收到了4个错误。这些是:
- 无法在功能
int
中将char *
转换为main()
。- 在函数
__s
中调用gets(char *)
时参数main()
中的类型不匹配。- 无法在功能
int
中将const char *
转换为main()
。- 在函数
醇>__s
中调用fputs(const char *,FILE *)
时参数main()
中的类型不匹配。
答案 0 :(得分:4)
我认为你对char数组的定义是错误的:
char ch(90);
必须是
char ch[90];
答案 1 :(得分:2)
在您的代码中
char ch(90);
被视为作为函数声明,这不是您想要的。您需要使用[]
运算符来表示数组,例如
char ch[90]; //array named ch having 90 chars
之后,如果if(fp == NULL)
成功(即文件打开失败),只打印一条消息不就足够了。您不应该在程序的任何位置进一步使用返回的fp
,即,您必须跳过涉及fp
的所有语句。否则,使用无效的文件指针将导致undefined behaviour。
那就是说,
gets()
,而是使用fgets()
。main()
的正确签名是int main(void)
。答案 2 :(得分:0)
您的角色数组定义应为:
char ch[90];
您对main
的定义应为:
int main(void)
请考虑使用fgets()
代替gets()
。
答案 3 :(得分:0)
检查char数组定义
它应该像char ch [90];