簡體   English   中英

傳遞給函數指針然后返回c時,字符串打印出垃圾

[英]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

}

問題是您要分配給第firstlast指針。 請記住,在C中,所有參數都通過value傳遞,這意味着將復制參數。 更改副本不會更改原始副本。

您應該做的是復制到字符串中:

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

要注意的另一件事是,您將帶有三個條目的數組作為函數的參數傳遞,但使用第五個條目( arr[4] )。 當然,這將不起作用,因為該數組中沒有第五(或第四)項。

還有一些挑剔的建議:數組會自然衰減到指針,因此不需要在數組上使用address-of運算符來獲取指針。 實際上,如果您認為自己有一個數組但實際上有一個指針,則可能很危險。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM