大家好,我是初学者,不熟悉指针,需要一些字符串方面的帮助。在它被传递到函数指针之后,它在我的主程序中计算后打印出垃圾。提前致谢。
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
}
最佳答案
问题是您正在分配给 first
和 last
指针。请记住,在 C 中,所有参数都是按值传递的,这意味着参数被复制。并且更改副本不会更改原件。
你应该做的是复制到字符串:
strcpy(first, arr[0]);
strcpy(last, arr[2]);
另一件需要注意的事情是,您传递了一个包含三个条目的数组作为函数的参数,但使用了第五个条目(arr[4]
)。这当然行不通,因为该数组中没有第五(或第四)个条目。
还有一些挑剔:数组自然会退化为指针,因此不需要在数组上使用寻址运算符来获取指针。事实上,如果您认为您有一个数组但实际上有一个指针,那可能会很危险。
关于c - 当传递给函数指针然后返回到 c 中时,字符串打印出垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22138584/