gpt4 book ai didi

c - 当传递给函数指针然后返回到 c 中时,字符串打印出垃圾

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:58 25 4
gpt4 key购买 nike

大家好,我是初学者,不熟悉指针,需要一些字符串方面的帮助。在它被传递到函数指针之后,它在我的主程序中计算后打印出垃圾。提前致谢。

int main() {

char str[3][10];
char firstm[10], secondm[10];
int i;

printf("Enter three string");
//get 3 strings from user

func1(&firstm, &secondm, str)
// prints junk
}

void func1(char *first, char *second, char arr[][10])
{
...computation here
...
...

first = arr[0];
last = arr[3];
// prints out the string correctly

}

最佳答案

问题是您正在分配给 firstlast 指针。请记住,在 C 中,所有参数都是按值传递的,这意味着参数被复制。并且更改副本不会更改原件。

你应该做的是复制到字符串:

strcpy(first, arr[0]);
strcpy(last, arr[2]);

另一件需要注意的事情是,您传递了一个包含三个条目的数组作为函数的参数,但使用了第五个条目(arr[4])。这当然行不通,因为该数组中没有第五(或第四)个条目。

还有一些挑剔:数组自然会退化为指针,因此不需要在数组上使用寻址运算符来获取指针。事实上,如果您认为您有一个数组但实际上有一个指针,那可能会很危险。

关于c - 当传递给函数指针然后返回到 c 中时,字符串打印出垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22138584/

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