gpt4 book ai didi

c - 在 C 中返回一个 Char 数组

转载 作者:行者123 更新时间:2023-12-02 17:11:15 26 4
gpt4 key购买 nike

我正在构建一个密码程序,但我不知道如何返回一个 char[] 数组我的密码方法

char *cipherinput(int ciphercount){
int i=0;
char *cipher[MAX_CIPHER_SIZE];


if(ciphercount>=2){
printf("Enter the Cipher!\n");
//loop through and add
for(i=0;i<ciphercount;i++){
scanf(" %c", cipher[i]);
}
}

return cipher;
}

我的主要方法有

#define MAX_CIPHER_SIZE 16
#define MAX_TEXT_SIZE 256
int main()
{
int ciphercount=0, textcount=0,i=0,j=0,k=0;
int *cipher_, *text_, N=0,N_;

printf("Enter size of Cipher!\n");
scanf("%d", &ciphercount);

if(ciphercount>=2){
cipher_ = cipherinput(ciphercount);
}
else{
printf("Start again / Cipher size should be greater or equal to 2\n");
main();
}
return 0;
}

我已经尝试了几种方法,例如 char** (string),但都没有成功。

最佳答案

您正在返回指向堆栈内存的指针,这是未定义的行为。您返回的字符串很可能会在函数返回后或调用另一个函数后不久被破坏。

这更接近你想要的:

char* cipherinput(int ciphercount) {
int i=0;
char cipher[MAX_CIPHER_SIZE+1]; // +1 to guarantee null termination.
cipher[0] = '\0';

if(ciphercount>=2){
printf("Enter the Cipher!\n");
//loop through and add
for(i=0;i<ciphercount;i++){
scanf(" %c", cipher[i]);
}
cipher[ciphercount] = '\0'; // null terminate
}

return strdup(cipher); // this is the same as ptr=malloc(strlen(cipher+1)) followed by strcpy(ptr,cipher)
}

该函数返回用户输入的字符串的副本。该函数的调用者应调用free。完成后在返回的指针上。如果ciphercount < 2 , 该函数将返回一个空字符串。

关于c - 在 C 中返回一个 Char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49140574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com