c - strcat(a[1] ,"22") 如何使用? C语言编程

标签 c strcat

我正在尝试制作一个程序,如果前一个字母与将输出的当前字母相同,则会在它们之间放置一个空格...

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

输出

enter image description here

关于c - strcat(a[1] ,"22") 如何使用? C语言编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28238503/

相关文章:

c - C语言打印素数

C Segmentation Fault,多个警告

c - strcat 段错误

c - strcat函数如何使用

c - 在声明中搜索我的名字!在c程序中使用字符串函数

c - 扫描输入的所有字符,直到看到制表符

c - 在 C 中为数组分配多个值

python - 为变量赋值或重复简单操作的计算量是否更大?

c - 打印字符数组时出现意外行为

c - 使用 strcat() 函数时打印字符串之间的空格