首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个C语言文件程序的有关问题

2012-06-11 
一个C语言文件程序的问题键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件

一个C语言文件程序的问题
键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存。
main()
{
FILE *fp;
int i=0;
char str[100];
printf("Input the string:\n");
if((fp=fopen("test.txt","w"))==NULL)
{
  printf("File open falied!\n");
  exit(0);
}
gets(str);
while(str[i]!='!')
{
  if(str[i]>='a'&&str[i]<='z')
  str[i]-='a'-'A';
  fputc(str[i],fp);
  i++;
}
fclose(fp);
if((fp=fopen("test.txt","r"))==NULL)
{
  printf("File open falied!\n");
  exit(0);
}
printf("Output the file content:\n");
puts(fgets(str,strlen(str)+1,fp)); 问题就是这个STRLEN(STR)+1,这里为什么要加1呢,我试了一下没加1就打不出那个!号
fclose(fp);
return 0;



[解决办法]
fgets()读的数字是num-1,也就是你输入2,函数只读1个字符,所以如果你只是以strlen去读的话,可以肯定的是你只能读到前面的abcd,最后一个字符!被\0覆盖。

但我不明白的是!貌似不在文件里,strlen+1的话也已经超过了文件的尾部了,照理也是会把!覆盖的。

热点排行