Позвольте мне сразу это прояснить, это для класса колледжа. Я не могу использовать библиотеки C ++, только стандартные библиотеки C. Не предлагайте мне использовать строки C ++ или cin / cout, потому что это не поможет мне в этом назначении.
Моя проблема: у меня есть глобальные массивы символов в основной функции. Мне нужно передать строки в глобальные символьные массивы из функции scanf () в функции foo (). Все компилируется нормально, проблема в том, что функция 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)
}