はっきりさせておきますが、これは大学の授業です。C++ ライブラリは使用できず、標準の C ライブラリしか使用できません。C++ 文字列や cin/cout を使用するように勧めないでください。この割り当てには役立たないからです。
私の問題: メイン関数にグローバル文字配列があります。関数 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)
}