免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2215 | 回复: 12
打印 上一主题 下一主题

[C] 求高手帮忙查下代码错误---已解决 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-11 09:36 |只看该作者 |倒序浏览
#include<stdio.h>
#include<stdlib.h>

main()
{
        FILE *fp;
        char filename[40],mode[4];
        while (1)
        {
                /*input filename and mode.*/
               
                printf("Enter a filename: \n");
                gets(filename);
                printf("Enter a mode (max 3 characters): \n");
                gets(mode);
               
                /* Try to open the file */
               
                if ((fp=fopen(filename,mode)) != NULL)
                {
                        printf("Successful opening %s in mode %s.\n",filename,mode);
                        fclose(fp);
                        puts("Enter x to exit,any other to continue.");
                        if((getc(stdin)) == 'x')
                                break;
                        else
                                continue;
                }
                else
                {
                                fprintf(stderr,"Error opening file %s in mode %s.\n",filename,mode);
                                puts("Enter x to exit,any other to try again.");
                                if ((getc(stdin)) == 'x')
                                        break;
                                else
                                        continue;
                }
        }
}

[ 本帖最后由 鬼才小科 于 2009-5-11 09:58 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-05-11 09:37 |只看该作者
错误讯息都不发上来,出考试题啊

论坛徽章:
0
3 [报告]
发表于 2009-05-11 09:46 |只看该作者
哦,不好意思
错误信息是

[root@linux ~]# gcc -g read.c -o read
read.c: In function ?.ain?.
read.c:34: error: expected ?.?.before ?.reak?
read.c:37: error: expected expression before ?.?.token

论坛徽章:
0
4 [报告]
发表于 2009-05-11 09:47 |只看该作者
a.c: 在函数‘main’中:
a.c:26: 警告: 格式字符串实参太少      //printf("Successful opening %s in mode %s.\n");
a.c:39: 错误: expected ‘)’ before ‘break’   
a.c:42: 错误: expected expression before ‘}’ token

[ 本帖最后由 veking 于 2009-5-11 09:49 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-05-11 09:51 |只看该作者

回复 #4 veking 的帖子

谢谢高手指点,那应该怎么修改呢?

[ 本帖最后由 鬼才小科 于 2009-5-11 10:24 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-05-11 09:51 |只看该作者
if ((getc(stdin) == 'x')
改为
if ((getc(stdin)) == 'x')

main()
{
..........
}
可能需要改为 int main()
{
..........
return 0;
}

论坛徽章:
0
7 [报告]
发表于 2009-05-11 09:54 |只看该作者
printf("Successful opening %s in mode %s.\n");
//这里不用说怎么改吧!

if((getc(stdin)) == 'x')
//这里缺少了一个右括号

论坛徽章:
0
8 [报告]
发表于 2009-05-11 09:54 |只看该作者

回复 #6 styleplus 的帖子

谢谢styleplus,

[ 本帖最后由 鬼才小科 于 2009-5-11 09:55 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2009-05-11 09:55 |只看该作者

回复 #7 veking 的帖子

谢谢veking

论坛徽章:
0
10 [报告]
发表于 2009-05-11 09:56 |只看该作者
gcc a.c
/tmp/ccgJc6lM.o: In function `main':
a.c.text+0x2f): warning: the `gets' function is dangerous and should not be used.


刚开始学,最好对自己要求严格一点。多看编译后的提示信息。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP