[英]String prints out junk when pass to function pointer and then back in c
大家好,我是初學者,並且是指針的新手,在這里需要一些有關字符串的幫助。 將其傳遞給函數指針后,在我的主程序中進行計算后將其打印出來。 提前致謝。
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中,所有參數都通過value傳遞,這意味着將復制參數。 更改副本不會更改原始副本。
您應該做的是復制到字符串中:
strcpy(first, arr[0]);
strcpy(last, arr[2]);
要注意的另一件事是,您將帶有三個條目的數組作為函數的參數傳遞,但使用第五個條目( arr[4]
)。 當然,這將不起作用,因為該數組中沒有第五(或第四)項。
還有一些挑剔的建議:數組會自然衰減到指針,因此不需要在數組上使用address-of運算符來獲取指針。 實際上,如果您認為自己有一個數組但實際上有一個指針,則可能很危險。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.