| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 797 人关注过本帖
标题:为什么从文件里读出来的数打印出来是笑脸呢(注:文件里的数为aaaGGG)
只看楼主 加入收藏
yangcaifei
Rank: 4
来 自:陕西
等 级:业余侠客
威 望:2
帖 子:127
专家分:216
注 册:2014-11-3
结帖率:84%
收藏
已结贴  问题点数:20 回复次数:10 
为什么从文件里读出来的数打印出来是笑脸呢(注:文件里的数为aaaGGG)
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char ch,str[10];
    int i=0;
    fp=fopen("E:\\filename.txt","r");
    if(fp==NULL)
    {
        printf("Can't open the file!\n");
        exit(0);
    }
    while(ch=fgetc(fp)!=EOF)
    {
        str[i]=ch;
        i++;
    }
    for(i=0;str[i]!='\0';i++)
    {
        if(str[i]>='a'&&str[i]<='z')
        {
            str[i]=str[i]-('a'-'A');
        }
        if(str[i]>='A'&&str[i]<='Z')
        {
            str[i]=str[i]+('a'-'A');
        }
    }
    printf("%s",str);

    return 0;
}
搜索更多相关主题的帖子: file include 
2015-01-05 17:46
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:20 
我试了试 是正常的

数据文件有问题?
2015-01-05 17:51
yangcaifei
Rank: 4
来 自:陕西
等 级:业余侠客
威 望:2
帖 子:127
专家分:216
注 册:2014-11-3
收藏
得分:0 
回复 2楼 zklhp
我的打印出来是六个笑脸
2015-01-05 17:52
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用yangcaifei在2015-1-5 17:52:30的发言:

我的打印出来是六个笑脸

a.zip (526 Bytes)


用这个数据试试
2015-01-05 17:55
yangcaifei
Rank: 4
来 自:陕西
等 级:业余侠客
威 望:2
帖 子:127
专家分:216
注 册:2014-11-3
收藏
得分:0 
回复 4楼 zklhp
还是笑脸啊
2015-01-05 18:04
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用yangcaifei在2015-1-5 18:04:18的发言:

还是笑脸啊

代码没问题 数据没问题 只能是你的编译环境的问题了

问题在你那 我没办法了 祝你好运
2015-01-05 18:06
yahwei
Rank: 7Rank: 7Rank: 7
来 自:湖~
等 级:黑侠
威 望:3
帖 子:145
专家分:644
注 册:2011-11-10
收藏
得分:0 
以下是引用yangcaifei在2015-1-5 17:46:50的发言:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char ch,str[10];
    int i=0;
    fp=fopen("E:\\filename.txt","r");
    if(fp==NULL)
    {
        printf("Can't open the file!\n");
        exit(0);
    }
    while(ch=fgetc(fp)!=EOF) //这里应该改为while ( ( ch=fgetc(fp) ) != EOF ),否则 ch 总是被赋值为 1 ,也就是笑脸的对应ASC值。
    {
        str=ch;
        i++;
    }
    //另外,建议加上一句 str[i] = '\0',因为文件里并没有字符串结束标志。
    for(i=0;str!='\0';i++)
    {
        if(str>='a'&&str<='z')
        {
            str=str-('a'-'A');
        }
        if(str>='A'&&str<='Z') //我猜你本来的意图应该是大写转小写,小写转大写,如果我没猜错,那这句应该是 else if(str>='A'&&str<='Z')
        {
            str=str+('a'-'A');
        }
    }
    printf("%s",str);

    return 0;
}


分析都在代码注释里……

[qq]949654600[/qq]
2015-01-06 09:57
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用zklhp在2015-1-5 17:51:19的发言:

我试了试 是正常的

数据文件有问题?

楼主 我错了 我向你道歉

我正常是因为我顺手改了一个地方

while ((ch=fgetc(fp)) != EOF)


加个括号就好了
2015-01-06 10:21
qidian123
Rank: 2
等 级:论坛游民
帖 子:19
专家分:34
注 册:2012-4-18
收藏
得分:0 
应该是编译的问题吧,这个我就搞不太清楚

www.jiajunyuanlin.com  www.futegz.comjtiao.com
2015-01-06 16:13
yangcaifei
Rank: 4
来 自:陕西
等 级:业余侠客
威 望:2
帖 子:127
专家分:216
注 册:2014-11-3
收藏
得分:0 
回复 7楼 yahwei
谢谢您的指正。
2015-01-06 17:45
快速回复:为什么从文件里读出来的数打印出来是笑脸呢(注:文件里的数为aaaGGG) ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047778 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved