讓我馬上說清楚,這是一個大學課程。我不能使用C++庫,只能使用標準C庫。不要建議我使用C++字符串或cin/cout,因爲這對我的這個任務不會有幫助。如何通過在C++中傳遞地址將scanf字符串傳遞給全局字符數組?
我的問題:我在主函數中有全局字符數組。我需要在函數foo()中將字符串傳遞給scanf()中的全局字符數組。一切都很好,問題是,scanf()函數似乎對它指向的全局字符數組沒有影響。我正在使用「地址」運算符(&)作爲參考書籍指示要執行的操作。也許,我不理解字符數組指針和scanf()「地址」(&)之間的關係。我覺得我到處尋找解決方案。
我已經在這個問題上花了幾個小時,所以我現在正在尋找專家的意見。
這裏是我的程序的簡化版本。
#include <stdio.h>
void foo(char arr1[], char arr2[]);
int main(void)
{
char arr1[20] = "initial";
char arr2[25] = "second";
foo(arr1); // <------- should change it to the string "second" upon scanf()
printf("Test Return Value: %s\n",arr1); // <---- returns "initial" (the problem)
printf("Enter a test value: ");
scanf("%s", &arr1);
printf("Test Return Value: %s\n",&arr1);
// ---------------------- this code is not part of the issue
fflush(stdin);
getchar();
return 0;
// ----------------------
}
void foo(char arr1[], char arr2[])
{
// there will be many returned values
printf("Enter a test value: ");
scanf("%s", &arr1); // <---------- the problem function (input < 20 chars)
}
複製代碼時犯了許多錯誤:'arr2'從不使用,'arr'沒有聲明。 – Simon