A. C璇瑷锛氬皢鏂囦欢alpha.txt涓鐨勫皬鍐欏瓧姣嶈浆鎹涓哄ぇ鍐欏瓧姣嶏紝鍐嶅皢杞鎹㈠悗鐨勫ぇ鍐欏瓧姣嶈拷鍔犲埌璇ユ枃浠朵腑锛屽拫鍐欙紵
璁炬枃浠禷lpha.txt鍦ㄥ綋鍓嶇洰褰曚笅鈥斺
(鍓鏈鏄鍘熸枃浠讹紝涓嬮潰鏄澶勭悊鍚庣殑鏂囦欢)
浠g爜鏂囨湰锛
#include "stdio.h"
int main(int argc,char *argv[]){
FILE *fp,*fpt;
char ch;
fp=fopen("alpha.txt","r+");
if(!fp || !(fpt=fopen("tfr.txt","w"))){
printf("Open the file failed, exit... ");
return 0;
}
while((ch=fgetc(fp))!=EOF){
if(ch>='a' && ch<='z'){
fseek(fp,-1L,SEEK_CUR);
fputc(ch-=32,fp);
fputc(ch,fpt);
fseek(fp,0L,SEEK_CUR);
}
}
fclose(fp);
fclose(fpt);
fp=fopen("alpha.txt","a");
if(!fp || !(fpt=fopen("tfr.txt","r"))){
printf("Open the file failed, exit... ");
return 0;
}
while((ch=fgetc(fpt))!=EOF)
fputc(ch,fp);
fclose(fp);
fclose(fpt);
remove("tfr.txt");
return 0;
}
渚涘弬鑰冣︹
B. c璇瑷澶у皬鍐欒浆鎹
鍥犱负浣犵涓涓猧f 鎶婂皬鍐檃杞涓哄ぇ鍐橝
浣嗙浜屼釜if鍙堟妸A杞鍖栦负a浜嗐
鎵浠ョ湅鍒扮粨鏋滄槸涓鏍凤紝浣犺皟璇曚竴涓嬪氨鐭ラ亾鏄鎬庝箞鏍蜂簡銆
鎶奿f鏀逛负if else灏卞彲浠ヨВ鍐抽棶棰樹簡銆
C. C语言字符大小写转换
#include<stdio.h>
#include<string.h>
char a(char b[10])
{char c;
int i;
for(i=0;i<10;i++)
{
if(b[i]>='a' && b[i]<'A') //判断b[i]>'a' <'A'?
c=b[i]+32; //怎么都是加32,没有减的?
if(b[i]>='A' && b[i]<='Z') //即使上面都对了,把小写转换成大写了,在这句又会把大写转换成小写,应该用else if
c=b[i]+32; //怎么都是加32,没有减的?
return c;
}
}
main() //习惯不好,最好用int main(void) 原因以后学到再说
{char s[10]; //定义最大字符串长度,但get(s)输入的字符串长度不一定为10啊,所以你循环一直用10是不正确的
char c;
int i;
char a(char b[10]); //从这里看出你的子函数处理的是一个字符串,但下面你对这个字符串处理10次想干嘛?
gets(s); //想一个字符一个字符的处理就应该定义为char a(char b);
for(i=0;i<10;i++)
{
c=a(s); //c一个字符,a(s)处理的是一个字符串,处理一个字符串返回一个字符???
printf("%c",c);
}
}
修改版:
#include<stdio.h>
#include<string.h>
char a(char b)
{
if(b>='a' && b<='z')
{
b=b-32;
}
else if(b>='A' && b<='Z')
{
b=b+32;
}
return b;
}
int main(void)
{
char a(char b);
char s[10];
char c;
int i;
gets(s);
for(i=0;i<strlen(s);i++)
{
c=a(s[i]);
printf("%c",c);
}
return 0;
}