| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 751 人关注过本帖
标题:[求助]一个文件的问题
只看楼主 加入收藏
cabin0120
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-9-6
结帖率:0
收藏
 问题点数:0 回复次数:14 
[求助]一个文件的问题

#include<stdio.h>
#include<string.h>
main()
{ int getstring(char filename[],char str[]);
char filename[10],str[100];
int m;
printf("please input the name of the file ");
scanf("%s",filename);
m=getstring(filename,str);
printf("%d\n",m);
printf("%s",str);

}
getstring(char filename[10],char str[100])
{ int i=0,n;
FILE *fp;
if((fp=fopen(filename,"r"))==NULL)
{printf("cannot open file \n");
exit(0);
}

while(!feof(fp))
str[i++]=fgetc(fp);
n=strlen(str);
return(n);
fclose(fp);
}
为什么以上程序最后输出时后面会出现一些莫名其妙的符号,而且输出的字符数也与实际的不相符合/?????

搜索更多相关主题的帖子: 文件 
2007-01-08 16:10
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 

修改了一下:
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
main()
{ int getstring(char filename[],char str[]);
char filename[10],str[100];
int m;
printf("please input the name of the file ");
scanf("%s",filename);
m=getstring(filename,str);
printf("%d\n",m);
printf("%s",str);

}
int getstring(char filename[10],char str[100])
{ int i=0,n;
FILE *fp;
if((fp=fopen(filename,"r"))==NULL)
{printf("cannot open file \n");
exit(0);
}

while(!feof(fp))
str[i++]=fgetc(fp);
n=strlen(str);
fclose(fp);
return(n);

}


坚决不跟用TC的人打交道!
2007-01-08 16:28
cabin0120
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-9-6
收藏
得分:0 

谢谢了,可是结果不对啊,还是有很多字符在后面显示出来。

2007-01-08 17:29
神秘失恋
Rank: 1
等 级:新手上路
帖 子:663
专家分:0
注 册:2007-1-6
收藏
得分:0 
while(!feof(fp))
str[i++]=fgetc(fp);

str[i]='\0';

上帝之手.........
2007-01-08 17:35
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
参照前便两位改了一下!呵呵!
[CODE]

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

int main(void)
{
int getstring(char filename[], char str[]);
char filename[10],str[100];
int m;

printf("please input the name of the file: ");
scanf("%s", filename);
m = getstring(filename, str);
printf("%d\n", m);
printf("%s", str);

return 0;

}

int getstring(char filename[10], char str[100])
{
int i = 0, n;
FILE * fp;

if((fp=fopen(filename, "r")) == NULL)
{
printf("cannot open file.\n");
exit(0);
}

while(!feof(fp))
str[i++]=fgetc(fp);
str[i] = '\0';
n=strlen(str);
fclose(fp);

return(n);

}

[/CODE]

该学习了。。。
2007-01-08 18:02
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
可否注意到这个程序当中的n值会比实际的字符串的长度大一!

该学习了。。。
2007-01-08 18:14
caiqiufu
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-12-14
收藏
得分:0 
数组的结尾有默认的\0所以就不用str[i] = '\0';
2007-01-08 18:40
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
呵呵,你在哪里看到的?好像不是吧!

该学习了。。。
2007-01-08 20:14
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
这里应该改为str[i - 1],在我的编译器上是这样的!
while(!feof(fp))
str[i++]=fgetc(fp);
假设文件中有两个字符,这个语句执行之后i的值为3。

该学习了。。。
2007-01-08 20:50
zeno
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-1-4
收藏
得分:0 
我觉得跟你要打开的文件有关吧
我运行你的程序的时候没有错误
提示输入文件名

2007-01-08 21:34
快速回复:[求助]一个文件的问题
数据加载中...
 
   



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

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