gpt4 book ai didi

c - 发送到函数的简单字符指针不起作用

转载 作者:行者123 更新时间:2023-11-30 17:55:43 26 4
gpt4 key购买 nike

我正在尝试编写 3 个函数:第一个:“read_comp”初始化一个 char 指针并为其分配函数“readAndRemove”返回的内容。readAndRemove 从用户处读取行并删除字符串之前的所有空格,并返回指向开头不带空格的字符串的指针。然后“read_comp”打印“readAndRemove”得到的字符串 - 没有空格的字符串。

最后一个函数 - 我遇到问题的那个函数...函数“findComplex”:我尝试这个函数做的只是获取 char 指针并打印函数得到的字符串。

void read_comp(void)
{
char *str = readAndRemove();
printf("%s\n",str);
findComplex(&str);
}

-------------

char * readAndRemove() /**function to read rest of input and remove first space**/
{
char tempChar[30];
fgets(tempChar,30,stdin);
char* ptr = strtok(tempChar, " ");
return ptr;
}

--------------
void findComplex(char* str)
{
printf("in findComplex:%s\n",str);

}

(抱歉,如果开始无关紧要,但我想我做每件事的方式可能有问题......)

所以我尝试修复和改变一些事情:更改此:定义 char *str;作为全局参数并更改功能:

void read_comp(void)
{
*str = readAndRemove();
printf("%s\n",str);
findComplex(str);
}

char * readAndRemove() /**function to read rest of input and remove first space**/
{
char tempChar[30];
fgets(tempChar,30,stdin);
char* ptr = strtok(tempChar, " ");
return ptr;
}


void findComplex(char* str)
{
printf("%s\n",str);
printf("in findComplex:%s\n",str);

}

最佳答案

变量strread_comp函数已经是一个指针。您对地址运算符 & 的使用使其成为指向指针的指针(即类型 char ** )。只需确保 findComplex函数在调用之前就已原型(prototype)化,并且不要使用取址运算符。

不过你有一个更大的问题,那就是 readAndRemove函数返回一个指向局部变量的指针。请记住,局部变量存储在堆栈中,并且当函数返回时,堆栈空间将被回收以供其他函数调用重用。在 read_comp 中创建数组函数,并将其连同其大小一起传递给 readAndRemove功能。

关于c - 发送到函数的简单字符指针不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14029549/

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