我想要做的是在循环中输入字符数组中的字符。我是c编程的新手,并且不太了解指针的使用。我的输入是这样的:
INPUT:
a b
c d
e f upto n times
我已声明了两个数组char a[n],b[n];
,我想在a[0]
中输入一个,b[1]
中的b,a[2]
中的c ...
这是我的尝试
char a[n],b[n];
for(i=0;i<n;i++)
{
scanf("%c %c",&a[i],&b[i]);
printf("%c %c",*(a+i),*(b+i));
}
但这不起作用!!如果我输入:a b输出是a `
答案 0 :(得分:1)
如果我运行你的代码,我会
a b
a bc d
c d
这意味着,在每一行之后输入的输入将被scanf()
解释为输入字符,因为您告诉她读取字符。此外,我有n = 3
,但循环运行两次,这也支持这个想法。
您应该将scanf()
更改为:
scanf(" %c %c",&a[i],&b[i]);
会吃新线。
这是一个最小的例子:
int main(void) {
int n = 3;
int i;
char a[n],b[n];
for(i=0;i<n;i++) {
scanf(" %c %c",&a[i],&b[i]);
printf("%c %c\n",*(a+i),*(b+i));
}
return 0;
}
输出:
a b
a b
c d
c d
printf()
中的换行符只是用于格式化优雅,而不是更多,就像评论错误地提出的那样。
如果您愿意,可以阅读我的页面:
答案 1 :(得分:0)
%c
不会跳过换行符。因此,您的第二个scanf
将首先读取第一行末尾的换行符,而不是“c”。
您可以将scanf
更改为scanf("%1s %1s", &a[i], &b[i]);
,但之后您必须将数组的大小增加一个。