鱼C论坛

 找回密码
 立即注册
查看: 2650|回复: 4

文件内容部分

[复制链接]
发表于 2012-2-7 15:42:53 | 显示全部楼层 |阅读模式
1鱼币
#include <stdio.h>
#include <stdlib.h>
void main ()
{
   FILE *fp;
   char ch, filename[10];
   scanf("%s",  filename);
   if ( fp = ( fopen (filename,"w") ) == NULL)
   {
    printf ( "error" );
    exit (0);
   }
   ch = getchar();
   ch = getchar();  / /这里不是已经写入了字符
   while (ch != '#')
   {
    fputc(ch,fp);
    ch=getchar ();//这里怎么还要输入?
   }
   putchar (10);     //这是什么意思?
   fclose (fp);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-7 15:42:54 | 显示全部楼层
本帖最后由 Tazy_ong 于 2012-2-7 21:41 编辑
  1. # include <stdio.h>
  2. # include <stdlib.h>

  3. int main(void)
  4. {
  5.         FILE *fp;
  6.         char ch, filename[10];
  7.         
  8.         //printf("Please input the name of file: ");
  9.         scanf("%s", filename);
  10.         
  11.         //if ( fp = ( fopen (filename,"w") ) == NULL) //语法有误!
  12.         if ( (fp = fopen(filename,"w")) == NULL )
  13.         {
  14.                 printf("error");
  15.                 exit(0);
  16.         }
  17.         
  18.         //printf("Please input word: ");
  19.         ch = getchar();
  20.         ch = getchar(); //去掉试试,这行代码目的是覆盖第一个字符,从第二个字符写起
  21.         
  22.         while (ch != '#') //当你输入#这个字符时,这个循环就会终止
  23.         {
  24.                 fputc(ch, fp); //int fputc(int, FILE *) 函数的功能是向文件里写入单个字符
  25.                 ch = getchar(); //所以下面还要继续循环写完用户输入的字符串里的所有字符
  26.         }
  27.         
  28.         putchar(10);  //int putchar(int) 函数的功能是向屏幕输出一个字符,10是换行的ASCII码值
  29.         fclose(fp);

  30.         return 0;
  31. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-7 21:18:19 | 显示全部楼层
如果这是你自己写的代码 一定要改正规范
我给你修改如下:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.    FILE *fp = NULL; //一般很少有人用文本文件的操作 都是操作二进制 用read和fwrite
  6.    int ch = 0;
  7.    char szFileName[10];
  8.    scanf("%9s",  szFileName);
  9.    fp = fopen(szFileName, "r+"); //这里模式要r+, 你w是写 文件不存在自动创建
  10.    if (!fp)
  11.    {
  12.        printf("error\r\n");
  13.        exit (0);
  14.    }
  15.    
  16.    
  17.    ch = getchar(); //注意getchar返回值是int 如果char类型无法与EOF比较
  18.                   //这段是最基本的查找了, 注意要判断是否文件结尾。。
  19.    while (ch != '#' && ch != EOF)
  20.    {
  21.        fputc(ch, fp);
  22.        ch=getchar();
  23.    }
  24.    
  25.    putchar (10);     //换行
  26.    if(fp)
  27.    {
  28.       
  29.        fclose (fp);
  30.        fp = NULL;
  31.    }
  32.    return 0;
  33. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-7 21:24:02 | 显示全部楼层
。。ch != EOF这个判断可以去掉 我以为你是读取已打开的文件
r+也可以换成w
以为是getc(fp)呢

但是当有判断EOF一定要定义成int变量 char 肯定出错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-8 12:34:38 | 显示全部楼层
哦哦哦:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 08:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表