鱼C论坛

 找回密码
 立即注册
查看: 4967|回复: 13

求C语言高手解决这个问题啊

[复制链接]
发表于 2013-3-20 15:05:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# include<stdio.h>

int main()
{
        FILE *fp;
        FILE *pp;
        char ch;
        char ch1 = 'H';
        char IF;
        char name[20];
       

        printf( "please put the name\n" );

        scanf( "%s", name );

        if( !(fp = fopen( name, "wt+" )))
        {
                printf("error!!\n");
                exit(1);
        }
       
        printf("put what you want\n");

        ch = getchar();
        ch = getchar();

        while( ch != EOF )//这里必须才行输入一行后 敲个回车再输入ctrl + z才能继续
        {
                fputc( ch, fp);
                ch = getchar();
        }


        printf("if you want see ? put(Y/N)");

        IF = getchar();
        while( ((IF != 'Y') && (IF != 'N')) ) //只要不输出Y和N 都会出现几次error!! please  try again(最少两次)
        {
                printf("error!! please  try again!\n");
           IF =  getchar();
        }


        if( IF == 'N')
        {
                printf("good bye\n");
            exit(0);
        }
        else
        {
                        if( !(pp = fopen( name, "r" )))
        {
                printf("error!!\n");
                exit(1);
        }


              while( ch1 != EOF )
                  {
                          ch1 = fgetc(pp);
                        putchar(ch);
                  }
        }


    fclose(fp);
        fclose(pp);
        return 0;



}

这是我的源代码,问题在每句的注释后面还有问题是 就算输入Y 最后也不会输出文件的内容
  然后我修改了  改成了用字符串判断 问题更大了
# include<stdio.h>

int main()
{
        FILE *fp;
        FILE *pp;
        char ch;
        char ch1;
        char IF[10];
        char name[20];
        char YES[10] = "Y",NO[10] = "N";

        printf( "please put the name\n" );

        scanf( "%s", name );

        if( !(fp = fopen( name, "wt+" )))
        {
                printf("error!!\n");
                exit(1);
        }
       
        printf("put what you want\n");

        ch = getchar();
        ch = getchar();

        while( ch != EOF )//这里必须才行输入一行后 敲个回车再输入ctrl + z才能继续
        {
                fputc( ch, fp);
                ch = getchar();
        }


        printf("if you want see ? put(Y/N)");

        gets(IF);
        while( ((IF != YES) && (IF != NO)) ) //无论输入什么都不能跳出循环...后面还没看,求解
        {
                printf("error!! please  try again!\n");
            gets(IF);
        }


        if( IF == NO)
        {
                printf("good bye\n");
            exit(0);
        }
        else
        {
                        if( !(pp = fopen( name, "r" )))
        {
                printf("error!!\n");
                exit(1);
        }


              while( ch1 != EOF )
                  {
                          ch1 = fgetc(pp);
                        putchar(ch);
                  }
        }


    fclose(fp);
        fclose(pp);
        return 0;



}
  求高手解答  感激不尽


小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-20 16:09:33 | 显示全部楼层
没人么??????
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-20 16:20:27 | 显示全部楼层
字符串比较 不能用 ==
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-20 16:27:55 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-20 16:45:09 | 显示全部楼层
做.勤奋的星星 发表于 2013-3-20 16:27
那么怎么解决第一个程序 如果输入一串字母 会出现很多  error!! please  try again的情况呢

你按下Q然后回车
你以为你输入了1个字符
实际上 回车也会不getchar接收的
你至少输入了2个字符
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-20 16:51:08 | 显示全部楼层
我是师兄 发表于 2013-3-20 16:45
你按下Q然后回车
你以为你输入了1个字符
实际上 回车也会不getchar接收的

那应该怎么解决呢???
还有输入文件内容的时候必须回车后ctrl+z才会继续  怎么按呢
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-20 19:49:13 | 显示全部楼层
字符串的比较用strcmp()函数,不支持“==”的,

另外变量名的话用小写比较规范。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-20 19:56:30 | 显示全部楼层
ch = getchar();
  ch = getchar();
   while( ch != EOF
这里的获得输入不能得到EOF吧。然后两个getchar重复了,后面只能得到回车符吧,然后字符变量比较要用strcmp。不能ch == YES
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-20 20:48:19 | 显示全部楼层
我是师兄 发表于 2013-3-20 16:45
你按下Q然后回车
你以为你输入了1个字符
实际上 回车也会不getchar接收的

那怎么解决呢
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-20 20:54:14 | 显示全部楼层
小甲鱼 发表于 2013-3-20 19:49
字符串的比较用strcmp()函数,不支持“==”的,

另外变量名的话用小写比较规范。

嗯,这个是小问题   用下面那一个就行 不过就是用下面的   如果输入一串字母 会出现很多  error!! please  try again   怎么解决呢   
  还有一个问题是  输入建立的文件后  必须是 空格然后在ctrl+z才会继续运行 第三个问题是  运行到最后 无法显示我之前输入的文本   想了半天了...求解
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-21 04:22:56 | 显示全部楼层
做.勤奋的星星 发表于 2013-3-20 20:54
嗯,这个是小问题   用下面那一个就行 不过就是用下面的   如果输入一串字母 会出现很多  error!! please ...

哎呀,你改过的代码还是没有注意到,字符串不能用 == 和 != 来表示逻辑关系的。另外发代码使用代码编辑框比较容易看。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-21 08:35:15 | 显示全部楼层
小甲鱼 发表于 2013-3-21 04:22
哎呀,你改过的代码还是没有注意到,字符串不能用 == 和 != 来表示逻辑关系的。另外发代码使用代码编辑框 ...

我前面没用 字符串 是用的单个字符  先不纠结字符串的问题  问题是 输入建立的文件后  必须是 空格然后在ctrl+z才会继续运行   运行到最后 无法显示我之前输入的文本
        :'(   我都好苦恼  另外 代码编辑框是啥
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-22 20:58:33 | 显示全部楼层
做.勤奋的星星 发表于 2013-3-21 08:35
我前面没用 字符串 是用的单个字符  先不纠结字符串的问题  问题是 输入建立的文件后  必须是 空格然后在 ...

建议先自己把程序改好,不然别人要先帮你排规范改代码很累的。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-22 21:00:05 | 显示全部楼层
做.勤奋的星星 发表于 2013-3-21 08:35
我前面没用 字符串 是用的单个字符  先不纠结字符串的问题  问题是 输入建立的文件后  必须是 空格然后在 ...

例如
  1.         printf("put what you want\n");
  2.         ch = getchar();
  3.         ch = getchar();
复制代码
意图是啥?都注释下吧,因为一般程序不这么写哈~
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-5 10:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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