Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.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,“返回指向两个字符串数组的指针。第一个是字符 索引为偶数的字符串,第二个是 处于奇数指数的s“ char**奇偶校验字符串(const char*s){ 字符**奇偶性=malloc(sizeof(字符*)*2); 字符偶数_字符串[]=“”; 字符奇数_字符串[]=“”; int x=0; int y=0; 对于(int i=0;i

“返回指向两个字符串数组的指针。第一个是字符 索引为偶数的字符串,第二个是 处于奇数指数的s“

char**奇偶校验字符串(const char*s){
字符**奇偶性=malloc(sizeof(字符*)*2);
字符偶数_字符串[]=“”;
字符奇数_字符串[]=“”;
int x=0;
int y=0;
对于(int i=0;i

我的逻辑是有道理的,但输出总是不正确的。例如,输入
abababab
时,我返回
abababab
,而预期的输出是
aaa bbb abababab
。我做错了什么?

偶数字符串和奇数字符串都是大小为1的数组。您的代码写得越界(
偶数字符串[x]=s[i]
奇数字符串[y]=s[i]
)。此外,它们是局部变量,一旦
奇偶校验字符串
返回,就不再存在,因此返回的指针是垃圾。

偶数字符串
奇数字符串
都是大小为1的数组。您的代码写得越界(
偶数字符串[x]=s[i]
奇数字符串[y]=s[i]
)。此外,它们是局部变量,一旦
奇偶校验字符串
返回,它们就不再存在,因此返回的指针是垃圾。

名为
偶数字符串
的字符串是局部变量,因此在函数返回后其内存将被释放,因此尝试将指向它的指针返回给调用方是无效的

尝试更改此行:

char even_strings[] = "";
对这样的事情:

char * even_strings = malloc(some_size);
这同样适用于您的
奇数_字符串
字符串


另外,一定要为
某些大小选择一个合适的值,这样你的程序就可以为每个字符串分配足够的内存,这样它就可以保存你正在写入的所有数据。

名为
偶数字符串的字符串是一个局部变量,因此在你的函数返回后,它的内存将被释放,因此,尝试将指向它的指针返回给调用方是无效的

尝试更改此行:

char even_strings[] = "";
对这样的事情:

char * even_strings = malloc(some_size);
这同样适用于您的
奇数_字符串
字符串


另外,一定要为
某些大小选择一个合适的值,以便程序为每个字符串分配足够的内存,以便它可以保存您正在写入的所有数据。

char even_strings[]=“”的长度为1-终止符。因此索引
偶数_字符串[x]=s[i]是UB,返回指向已经退出生命的本地字符串的指针也是如此。您可以考虑查看C是如何再次处理字符串的。它们不是高级对象,而是由
char
组成的数组,用ASCII码填充,最后是一个
nul
零。不是可以用作右值的东西。(尽管指向字符串,但您可以)
char偶数字符串[]=”的长度为1-终止符。因此索引
偶数_字符串[x]=s[i]是UB,返回指向已经退出生命的本地字符串的指针也是如此。您可以考虑查看C是如何再次处理字符串的。它们不是高级对象,而是由
char
组成的数组,用ASCII码填充,最后是一个
nul
零。不是可以用作右值的东西。(指向字符串的指针,你可以)谢谢你!那很有帮助,谢谢!这很有帮助。