Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 空终止字符数组问题_C - Fatal编程技术网

C 空终止字符数组问题

C 空终止字符数组问题,c,C,代码应该将某些字符转换为其他字符 我的问题是,当输入字符进行翻译时,它做得很好,但最多只能输入第8个字符 例如: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 但它的意思是 @@@@@@@@A 有人能帮忙吗

代码应该将某些字符转换为其他字符

我的问题是,当输入字符进行翻译时,它做得很好,但最多只能输入第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不会提供数组的大小,而是提供指针的大小。