c语言文件操作,求修改。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE *fp;
char str1[100],str2[100];
int i,n,k=0;
printf("请输入你要转换的字符串:\n");
gets(str1);
n=strlen(str1);
for(i=0;i<n;i++)
{
str2[k++]=str1[i]-32;
}
if((fp=fopen("1.text","w"))==NULL)
{
printf("不能打开此文件!\n");
exit(0);
}
printf("\n转换后的字符串为:\n");
fputs(str2,fp);
fputs("\n",fp);
printf("%s\n",str2);
return 0;
}

写得很不错了,主要问题只有一个就是

str2[100]没有初始化


最后输出时会有乱码对吧

就是因为你的str2没有初始化

虽然通过

for(i=0;i<n;i++)
{
   str2[k++]=str1[i]-32;
}

这个数组的前n个字符确定了,但是后面的100-n个字符却是不确定的

运行这三句时

fputs(str2,fp);
fputs("\n",fp);
printf("%s\n",str2);  //由于没有字符串结束符,就会输出str2内的所有字符,没初始化的部分就是乱码

char str1[100],str2[100];

改成

char str1[100],str2[100]={0}; 就行

屏幕输出的内容和文件中内容一样

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-27

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main()

{

FILE *fp;

char str1[100],str2[100]="";

int i,n,k=0;

printf("请输入你要转换的字符串:\n");

gets(str1);

n=strlen(str1);

for(i=0;i<n;i++)

{

str2[k++]=str1[i]-32;

}

if((fp=fopen("1.txt","w"))==NULL)

{

printf("不能打开此文件!\n");

exit(0);

}

printf("\n转换后的字符串为:\n");

fputs(str2,fp);

fputs("\n",fp);

printf("%s\n",str2);

return 0;

}

第2个回答  2013-12-27

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main()

{

FILE *fp;

char str1[100],str2[100];

int i,n,k=0;

printf("请输入你要转换的字符串:\n");

gets(str1);

n=strlen(str1);

for(i=0;i<n;i++)

{

str2[k++]=str1[i]-32;

}

str2[k]='\0';

if((fp=fopen("1.text","w"))==NULL)

{

printf("不能打开此文件!\n");

exit(0);

}

printf("\n转换后的字符串为:\n");

fputs(str2,fp);

fputs("\n",fp);

fclose(fp);

printf("%s\n",str2);

getchar();

return 0;

}

第3个回答  2013-12-27

修改什么?是要输入什么txt里面就存什么吗?

for(i=0;i<n;i++)
{
str2[k++]=str1[i]; //这里不要-32
}

第4个回答  2013-12-27
在fopen那行上添加一行str2[k]='\0';本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网