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;
}