
小弟的計概老師出了一份作業
要求我們檢測輸入的英文文句是否為回文

然後在作業的說明最後附註問我們寫的程式是否能檢測中文回文
不過這個不影響成績

然後小弟寫完程式並檢測了5、6遍後
很無聊手癢輸入中文回文
竟然可以檢測出來

因為小弟是用char陣列去檢驗的
小弟記得char陣列只能儲存ASCII碼吧

加上小弟的char陣列在某個步驟會排除所有非英文小寫字母的字元
但是對於全形的中文似乎沒有作用

而且小弟檢測結果發現
所有全形符號都無法處理掉
請問各位大大這是什麼原因呢

以下是程式碼

#include<stdio.h>
#include <string.h>
char item[5000];int a=0,k=0,b=0;
int main(int argc,char **argv)
{
for(int i=1;i<argc;i++)
{
printf("%s",argv[i]);
b=strlen(argv[i]);
for(int j=0;j<b;j++)item[k+j]=argv[i][j];
k=k+b;
}
printf("\n");
/*將二維陣列srgv所儲存之字元轉存入一維陣列item中。*/
for(int i=0;i<5000;i++)
{
if(item[i]>=65&&item[i]<=90)
item[i]=item[i]+32;
}
/*將陣列item中大寫字母轉為小寫字母。*/
for(int i=0;i<4999;i++)
{
b=1;
while(item[i]<97||item[i]>122)
{
item[i]=item[i+b];
item[i+b]=0;
b++;
if(i+b>=5000) break;
}
}
/*將陣列item中的非英文小寫字母之字元排除。*/
while(item[a]!=0)a=a+1;
/*計算殘留於item陣列中的字元數。*/
b=a-1;
if(item[1]==0)printf("無效輸入\n" );
for(int i=0;i<a;i++)
{
if(item[i]!=item[b])
{
printf("no\n");
break;
}
if(b-i<=1)
{
printf("yes\n");
break;
}
b--;
}
/*將殘留的字元進行比對是否為回文*/
getchar();
return 0;
}
先感謝各位大大為小弟解惑
