"str[i]=str[i]-('z'-'a');"
上面这句话应该不对吧?小写字母全部转换成大写字母就是对应ASCII码减32,你这个'z'-'a'的值是25.
另外赞同楼上说的“还可以按照常识,比如操作文本文件都用ascii,对于二进制文件,洞轿用二进制。 ”但这不是绝对的,文本文件用ascii,主要是这些信息本来就是以自然文本的袜颤肢形式表达,你用记事本打开这些ASCII码存储的文本,一目了然知道了想要反应的信息。如果按照二进制的方式读写这些本来要用ASCII码表达的东西,用记事本打开就只能看到乱码。但并不是说以二进制操作就不能正确获取内容。用二进制操作文本文件通常告世比用ASCII方式生成的文件要小得多。
#include
void 裂敬搏main()
{
char str[100];
FILE *p;
int i,len=0;
printf("输入肆祥一串英文字符:\n");
while((str[len]=getchar())!='!')
{
len++;
稿毁}
for(i=0;iif(str[i]>='a'&&str[i]<='z')
str[i]-=32;
p=fopen("c:\\test.txt","w");
fputs(str,p);
fclose(p);
}
#include
void convert(char *str)
{
while (*str!='\派首0')
{
if (*str>='哗歼a'乱羡冲 && *str<='z')
{
*str-=32;
}
*str++;
}
}
main()
{
FILE *fp;
char str[100];
fp = fopen("test.txt","w");
gets(str);
convert(str);
fputs(str,fp);
fclose(fp);
}
什么时候用二进制,什么时候用ascii码,这个不好定论。
一方面根据你的需要,禅败好还可以按照常识枯梁,比如贺铅操作文本文件都用ascii,对于二进制文件,用二进制。