我知道string.h有isalpha(_)函数,但我想知道是否有函数可以让我们知道字符串中的特定字符是哪个字母。我想用另一个特定的字符来改变它,比如所有的A都会变成“35;--”,所有的K都会变成“-#”,所有其他的字母都有自己的区别(这可能吗?做一个子串?在绳子里面?或者我做错了…)

char string[100];

int i;

char A*[]={"#--","--#"};

gets(string);

for(i=0, i<100, i++) {
    if(isalpha(string[i])) {
        string[i]=A[1];
    }
}

但我不知道一个函数告诉我那是什么字母。。我知道这是一封信。。我知道是什么信。。但是计算机/编译器不知道它是什么字母,它只知道它是不是一个字母。。
我们也可以使用strcmp(_)?作为替代?就像我们再做一个字母,把所有字母都排好?
char alpha[26]={'a','b','c','d','e','f','g','h','i','j','k','l'*you get the point* };

char string[100];

int i;

char A*[]={"#--","--#"};

gets(string);

for(i=0, i<100, i++) {
    if(strcmp(alpha,string[i])==0) {
        string[i]=A[1];
    }
}

还是应该使用ASCII表?因为我们测试过了
printf("%d , %d \n", 'A', 'a');
printf("%c, %c \n", 65, 97);

这表明:
65 , 97
A , a

在这里做什么最好?

最佳答案

为此,请创建一个包含替换字符的数组。然后,通过要编码的字符访问此数组。访问是通过假设字符是ASCII字符来完成的,只需从ASCII表中减去偏移量(例如,如果让它从A开始,则为65),然后访问数组。例如。

char *code = [ '1', '2' ];

char input = 'B'; // 66 in ASCII
char output = code[input - 65];

编辑:当然你也可以这样做,例如char编码到char*(例如字符串)。只需使用字符串数组而不是字符数组。

09-26 20:24
查看更多