#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}; 就行
屏幕输出的内容和文件中内容一样
#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;
}
#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;
}
修改什么?是要输入什么txt里面就存什么吗?
for(i=0;i<n;i++){
str2[k++]=str1[i]; //这里不要-32
}