| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 282 人关注过本帖
标题:文件函数的简单问题
只看楼主 加入收藏
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
结帖率:96.77%
收藏
已结贴  问题点数:20 回复次数:8 
文件函数的简单问题
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
    FILE *fp;
    char filename[20];
    char str[100];
    int i=0;
    printf("please input filenanme:\n");
    scanf("%s",filename);
    if((fp=fopen(filename,"w"))==NULL)
    {
        printf("file can not open!\n");
        exit(0);
    }
    printf("pelase input string!\n");
    scanf("%s",str);
    while(str[i]!='!')
    {
        if(str[i]>='a'&&str[i]<='z')
        {
            str[i]=str[i]-32;
        }
        fputc(str[i],fp);
        i++;
    }
    fclose(fp);
    fp=fopen(filename,"r");
    fgets(str,strlen(str)+1,fp);//strlen(str)计算的是有效字符长度,再加上一个'\0',如果只是strlen(str)的话,实际上会少得到一个字符,是不是这样的呢?
    printf("%s\n",str);
    fclose(fp);
}
/*另外就是运行问题了,怎么输入数据后,就没反应了呢,创建的文件里是空的,不知道咋回事,指教下!
搜索更多相关主题的帖子: color 
2012-10-25 11:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
把你的运行画面截出来看看

授人以渔,不授人以鱼。
2012-10-25 11:48
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

接下来就什么都不显示了。。。

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-10-25 11:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
在第二次打开文件时加上检测是否成功的代码,看看有什么结果。
如果成功,把fgets()的第二个参数改成sizeof(str)再运行。

授人以渔,不授人以鱼。
2012-10-25 11:58
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
    FILE *fp;
    char filename[20];
    char str[100];
    int i=0;
    printf("please input filenanme:\n");
    scanf("%s",filename);
    if((fp=fopen(filename,"w"))==NULL)
    {
        printf("file can not open!\n");
        exit(0);
    }
    printf("pelase input string!\n");
    scanf("%s",str);
    while(str[i]!='!')
    {
        if(str[i]>='a'&&str[i]<='z')
        {
            str[i]=str[i]-32;
        }
        fputc(str[i],fp);
        i++;
    }
    fclose(fp);
    if((fp=fopen(filename,"r"))==NULL)
    {
        printf("file can not open!\n");
        exit(0);
    }
    fgets(str,sizeof(str),fp);//strlen(str)计算的是有效字符长度,再加上一个'\0',如果只是strlen(str)的话,实际上会少得到一个字符,是不是这样的呢?
    printf("%s\n",str);
    fclose(fp);
}
/*另外就是运行问题了,怎么输入数据后,就没反应了呢,创建的文件里是空的,不知道咋回事,指教下!*/
按照你的写了下,还是像上面的那样,没反应啊。。

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-10-25 12:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
分析一下:你只写到感叹号为止,把感叹号那句话改成'\0',运行看看。
注意C语言只认识字符串的空结束符,没有这个符号,它不知道字符串什么时候结束的,printf()需要找到'\0'。
用记事本打开你生成的那个文件,看看是什么内容。

[ 本帖最后由 TonyDeng 于 2012-10-25 12:17 编辑 ]

授人以渔,不授人以鱼。
2012-10-25 12:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
其实你写这个程序想测试什么?

授人以渔,不授人以鱼。
2012-10-25 12:28
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
其实我想把多个字符串中的小写改成大写,但是这样写的话,只能把一个字符串中的小写改成大写,具体的还要再想一想

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-10-25 15:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你已经使用了string.h头,就可以直接使用这个头提供的库函数来转换字符串的大小写,不要自己写代码转换,并非所有程序都用ASCII编码的。

授人以渔,不授人以鱼。
2012-10-25 15:09
快速回复:文件函数的简单问题
数据加载中...
 
   



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

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