我正在尝试制作一个程序,如果前一个字母与将输出的当前字母相同,则会在它们之间放置一个空格...
#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... 我不知道为什么... 请帮忙?
最佳答案
仅仅因为输入 abc 的 'C' 情况的 if(Arrayoutput[i][c-1]=='2')
将始终检查 c-1 位置,即始终” “。
- 案例 A -> “2”
- 案例 B ->“2 22”
- case C ->
Arrayoutput[i][c-1]
是Arrayoutput[i][1]
,它是 空格,然后在字符串末尾不添加空格。
试试这个
#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;
int len;
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++){
len = strlen(Arrayoutput[i]);
switch(toupper(Arrayinput[i][c])){
case 'A':
if((len != 0) && (Arrayoutput[i][len-1]=='2'))
strcat(Arrayoutput[i]," ");
strcat(Arrayoutput[i],"2"); break;
case 'B':
if((len != 0) && (Arrayoutput[i][len-1]=='2'))
strcat(Arrayoutput[i]," ");
strcat(Arrayoutput[i],"22"); break;
case 'C':
if((len != 0) && (Arrayoutput[i][len-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]);
}
return 0;
}
输出
关于c - strcat(a[1] ,"22") 如何使用? C语言编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28238503/