У меня есть этот код, который работает:
int main()
{
char a[100];
int i;
int n=3;
for(i=1;i<=n;i++){
printf("insert char \n");
scanf("%c",&a[i]);
getchar();
}
for(i=1;i<=n;i++){
printf("%c ",a[i]);
}
}
Я вставляю AB c Он печатает AB c, пока все хорошо, я хотел бы иметь возможность вставить размер N с scanf, но если я поставлю scanf из n следующим образом:
int main()
{
char a[100];
int i;
int n;
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("insert char \n");
scanf("%c",&a[i]);
getchar();
}
for(i=1;i<=n;i++){
printf("%c ",a[i]);
}
}
, когда я запускаю программу, это вызывает проблемы во втором для l oop, я ввожу ab c, а второй for возвращает пустые символы, фактически выполняет новую строку n раз, в C, когда каждая программа завершает «PROCESS RETURNED et c». печатается. Когда я запускаю первый код, символы печатаются в одной и той же строке, а в следующей строке появляется «ПРОЦЕСС ВЕРНУТЬСЯ», вместо второго кода после вставки печатаются n пустых строк, а затем «ПРОЦЕСС ВЕРНУТЬСЯ», даже если я не написано \ n в printf. Я пытался проверить, хранится ли n в том же месте, что и некоторый элемент a (с printf ("% p", & a [i]) или printf ("% p", & a) и printf ("% p ", & n)), но адрес другой. Есть идеи?