【发布时间】:2015-01-30 14:55:20
【问题描述】:
我正在尝试制作一个程序,如果前一个字母与将输出的当前字母相同,则会在它们之间放置一个空格...
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define T 100
#define S 255
int main(){
char Arrayinput[T][S];
char Arrayoutput[T][S*5];
int i, c, x;
for(i=0;i<T;i++){
for(c=0;c<S*5;c++){
Arrayoutput[i][c]=0;
}
}
scanf("%d", &x);
getchar();
for(i=0;i<x;i++){
gets(Arrayinput[i]);
}
for(i=0;i<x;i++){
for(c=0;c<strlen(Arrayinput[i]);c++){
switch(toupper(Arrayinput[i][c])){
case 'A':
if(Arrayoutput[i][c-1]=='2')
strcat(Arrayoutput[i]," ");
strcat(Arrayoutput[i],"2"); break;
case 'B':
if(Arrayoutput[i][c-1]=='2')
strcat(Arrayoutput[i]," ");
strcat(Arrayoutput[i],"22"); break;
case 'C':
if(Arrayoutput[i][c-1]=='2')
strcat(Arrayoutput[i]," ");
strcat(Arrayoutput[i],"222"); break;
} } }
for(i=0;i<x;i++){
printf("case #%d:%s\n",i+1,Arrayoutput[i]);
}
system("pause");
return 0;
对于某些情况..
如果我输入.. bca 它输出 22 222 2 这是正确的.. 如 出租车 = 222 22 2 bac = 22 2 222
但是每当我输入 abc 它输出... 2 22222... 我不知道为什么... 请帮忙?
【问题讨论】:
-
我还把arrayoutput[][]的所有元素都设为0,所以里面不会有垃圾数据。
-
请编辑您的问题以包括
ArrayInput和ArrayOutput的声明,以及您如何初始化它们。 -
Arrayoutput[i][c-1] --> Arrayoutput[0][-1] for c=0你知道吗? -
另外,学习使用调试器,然后你可以逐行逐行查看代码,帮助自己找到问题。