C 空终止字符数组问题
代码应该将某些字符转换为其他字符 我的问题是,当输入字符进行翻译时,它做得很好,但最多只能输入第8个字符 例如: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 但它的意思是 @@@@@@@@A 有人能帮忙吗C 空终止字符数组问题,c,C,代码应该将某些字符转换为其他字符 我的问题是,当输入字符进行翻译时,它做得很好,但最多只能输入第8个字符 例如: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 但它的意思是 @@@@@@@@A 有人能帮忙吗
#include
void secrefy(char* secret) {
int b = sizeof(secret);
for(int a = 0; a < b; a++) {
switch(secret[a]) {
case 'a': secret[a] = '@';
break;
case 'A': secret[a] = '@';
break;
case 'e': secret[a] = '3';
break;
case 'E': secret[a] = '3';
break;
case 'h': secret[a] = '#';
break;
case 'H': secret[a] = '#';
break;
case 'p': secret[a] = 'q';
break;
case 'P': secret[a] = 'q';
break;
case 's': secret[a] = '$';
break;
case 'S': secret[a] = '$';
break;
case 't': secret[a] = '+';
break;
case 'T': secret[a] = '+';
break;
case 'x': secret[a] = '*';
break;
case 'X': secret[a] = '*';
break;
}
}
}
int main(void) {
char secret[]="AAAAAAAAA";
secrefy(secret);
printf("Encrypted will be %s", secret);
}
#包括
无效secrefy(字符*秘密){
int b=sizeof(秘密);
对于(int a=0;a
而不是b=sizeof(secret)
您需要使用b=strlen(secret)
sizeof
运算符给出类型的大小(char*
)
strlen
函数通过读取字符串内容返回字符串长度。而不是b=sizeof(secret)
您需要使用b=strlen(secret)
sizeof
运算符给出类型的大小(char*
)
strlen
函数通过读取字符串内容返回字符串的长度。sizeof(secret)
是指针的唯一大小,它不等于函数中传递的字符串secrefy()
,调用函数时传递的大小更好,或者在C中使用strlen
作为一般规则,如果将数组传递给函数,始终为数组的大小提供一个额外的参数,因为数组会衰减为指针,因此sizeof不会给出数组的大小,而是给出指针的大小。sizeof(secret)
是指针的唯一大小,它不等于函数中传递的字符串secrefy()
,调用函数时传递的大小更好,或者在C中使用strlen
作为一般规则,如果将数组传递给函数,始终为数组的大小提供一个额外的参数,因为数组会衰减为指针,所以sizeof不会提供数组的大小,而是提供指针的大小。