无法写入文件

时间:2015-05-20 07:58:12

标签: c arrays file file-io

这是在文件中写入内容的代码。

#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个错误。这些是:

  
      
  1. 无法在功能int中将char *转换为main()
  2.   
  3. 在函数__s中调用gets(char *)时参数main()中的类型不匹配。
  4.   
  5. 无法在功能int中将const char *转换为main()
  6.   
  7. 在函数__s中调用fputs(const char *,FILE *)时参数main()中的类型不匹配。
  8.   

4 个答案:

答案 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

那就是说,

  1. 从不使用gets(),而是使用fgets()
  2. main()的正确签名是int main(void)

答案 2 :(得分:0)

首先:

您的角色数组定义应为:

char ch[90];

其次:

您对main的定义应为:

int main(void)

第三

请考虑使用fgets()代替gets()

答案 3 :(得分:0)

检查char数组定义

它应该像char ch [90];