【发布时间】:2020-07-17 13:23:45
【问题描述】:
我有这个工作的代码:
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]);
}
}
我插入 a b c 他打印 a b c,到目前为止一切顺利,我希望能够使用 scanf 插入大小 n,但是如果我像这样放置 n 的 scanf:
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]);
}
}
当我运行程序时,它在第二个 for 循环中导致问题,我输入 a b c,第二个 for 返回空字符,实际上在 C 中换行 n 次,当每个程序完成“PROCESS RETURNED 等”时。被打印。当我运行第一个代码时,字符被打印在同一行,并且在下一行有“PROCESS RETURNED”,而不是插入后的第二个代码 n 空行被打印,然后“PROCESS RETURNED”即使我没有在 printf 中写入 \n。我试图查看 n 是否存储在与 a 的某些元素相同的位置(使用 printf ("%p", & a [i]) 或 printf ("%p", & a) 和 printf ("%p ", & n )),但地址不同。有什么想法吗?
【问题讨论】: