标题:[求助]C高手,能幫我改一下這條程序嗎?
只看楼主
心系风铃
Rank: 1
等 级:新手上路
帖 子:145
专家分:0
注 册:2004-12-23
 问题点数:0 回复次数:4 
[求助]C高手,能幫我改一下這條程序嗎?

我要寫一條程序,就是任意輸入一串字符串,能夠把大寫字母,小寫字母,數字,特殊符號分門別類的輸出到各自的數組裡去,可是我在TC裡導入我寫的程序時,老是有錯,希望有那位高手幫小妹指定一下迷津,先謝謝了!

下面就是我寫好的程序,出錯的原因就是數組首地址的賦值問題,能不能幫我改一下。。。急用。。。謝謝了。。。。。。

#include <stdio.h> main() { char str[100],*pstr; int i,a1[25],a2[25],a3[25],a4[25],*pa1,*pa2,*pa3,*pa4; printf("Input a string:\n"); gets(str); printf("\n"); pstr=&str[0]; pa1=&a1[0]; pa2=&a2[0]; pa3=&a3[0]; pa4=&a4[0]; i=0; while(*(pstr+i)!='\0')

{ if ((*(pstr+i)>='0') && (*(pstr+i)<='9')) *pa1=*(pstr+i); pa1++; else if ((*(pstr+i)>='A') && (*(pstr+i)<='Z') *pa2=*(pstr+i); pa2++; else if ((*(pstr+i)>='a') && (*(pstr+i)<='z') *pa3=*(pstr+i); pa3++; else *pa4=*(pstr+i); pa4++;

} pstr++; i++; printf("%d\n %d\n %d\n %d\n",*(pa1),*(pa2),*(pa3),*(pa4)); printf("\n");

}

搜索更多相关主题的帖子: include 特殊符號 字符串 字母 
2004-12-23 16:10
aniude
Rank: 2
等 级:新手上路
威 望:3
帖 子:231
专家分:0
注 册:2004-11-3
得分:0 

pstr=str;这样就可以了吧。而且 你while的执行过程中i又没有赋值,我都不知道你要干什么


2004-12-24 09:26
workhard
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2004-11-17
得分:0 

1。数组定义不太合理,str[100]时,后面的数组长度最好都定义为100,小心溢出。

2。while 循环也不对,str和i 不可以同时增加,而且应该在while内增加。

3。输出也不对。

# include <stdio.h> void main() { char str[25],*pstr; char a1[25],a2[25],a3[25],a4[25],*pa1,*pa2,*pa3,*pa4; printf("Input a string:\n"); gets(str); printf("\n"); pstr=&str[0]; pa1=&a1[0]; pa2=&a2[0]; pa3=&a3[0]; pa4=&a4[0]; while(*pstr!='\0') { if ((*pstr>='0') && (*pstr<='9')) { *pa1=*pstr; pa1++; } else if ((*pstr>='A') && (*pstr<='Z')) { *pa2=*pstr; pa2++; } else if ((*pstr>='a') && (*pstr<='z')) { *pa3=*pstr; pa3++; } else { *pa4=*pstr; pa4++; } pstr++; } *pa1='\0'; *pa2='\0'; *pa3='\0'; *pa4='\0'; printf("%s\n%s\n%s\n%s\n",a1,a2,a3,a4); }


2004-12-24 10:34
心系风铃
Rank: 1
等 级:新手上路
帖 子:145
专家分:0
注 册:2004-12-23
得分:0 

謝謝workhard ,你很厲害!


年初二 拿利事
2004-12-24 14:43
aczhe
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2004-12-23
得分:0 

来个不用指针的

#define N 100 main() {char a[N],az[N],ad[N],ax[N],aq[N]; int i,j,k,m,n; j=0;k=0;m=0;n=0; printf("please input a string:\n"); for(i=0;i<N;i++) scanf("%c",&a[i]); for(i=0;i<N;i++) {if(a[i]>='0'&&a[i]<='9') {az[j]=a[i];j++;} else if(a[i]>='A'&&a[i]<='Z') {ad[k]=a[i];k++;} else if(a[i]>='a'&&a[i]<='z') {ax[m]=a[i];m++;} else {aq[n]=a[i];n++;} } az[j]='\0';ad[k]='\0';ax[m]='\0';aq[n]='\0'; printf("a[]=\""); for(i=0;i<N;i++) printf("%c",a[i]); printf("\"\n"); printf("az[]=\""); for(j=0;az[j]!='\0';j++) printf("%c",az[j]); printf("\"\n"); printf("ad[]=\""); for(k=0;ad[k]!='\0';k++) printf("%c",ad[k]); printf("\"\n"); printf("ax[]=\""); for(m=0;ax[m]!='\0';m++) printf("%c",ax[m]); printf("\"\n"); printf("aq[]=\""); for(n=0;aq[n]!='\0';n++) printf("%c",aq[n]); printf("\"\n");getch(); }

运行结果 please input a string:

1234567890qwertyuiopasdfghjklzxcvbnm,./';[]\=-_+|}{:"?><QWERTYUIOPL KJHGFDSAZXCVBNM,.;'][P)(*&^%$#@!QWERTYUIOLK a[]="1234567890qwertyuiopasdfghjklzxcvbnm,./';[]\=-_+|}{:"?><QWERTYUIOPLKJHGFDSA ZXCVBNM,.;'][P)(*&^%$#@!Q" az[]="1234567890" ad[]="QWERTYUIOPLKJHGFDSAZXCVBNMPQ" ax[]="qwertyuiopasdfghjklzxcvbnm" aq[]=",./';[]\=-_+|}{:"?><,.;'][)(*&^%$#@!"


君子敬其在己者,而不慕其在天者,是已日进也。
2004-12-27 19:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-9932-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.060635 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved