C语言:扫描和打印名称

时间:2016-02-20 06:19:19

标签: c arrays scanf

今天,我写了一个C Programe来扫描键盘上的两个名字并在显示器上打印它是

char b[2],i;

for(i=0;i<2;i++)
{
    scanf("%s",b[i]);
}
for(i=0;i<2;i++)
{
    printf("%s",b[i]);
}

但是输出是运行时错误,我是C的初学者。我该怎样做才能使它成为正确的程序。

3 个答案:

答案 0 :(得分:1)

首先,%s是摄取字符串%c是为了扫描单个字符。

那就是说,在你的情况下,

  1. 您没有为数组中的null-terminator分配spacer。
  2. 你也没有空终止输入。因此,即使您想要,也不能将其用作 sting

答案 1 :(得分:1)

查看您声明的内容是错误的字符b[2]。您正在扫描字符串值,声明表示您想要b数组中的两个字符
如果你想接受两个字符串值,那么你的声明必须是:

char *b[1];

您可以在此处扫描数组中的值:

*b[0] = "string1";
*b[1] = "string2";


您可以使用二维数组进行存储,然后您的声明将是:

char b[2][100];

现在,100指定要输入的字符串的字符数,2表示您输入的字符串的值的数量。
我希望这能清除你的疑虑。

答案 2 :(得分:0)

您可以按照下面的说明更正代码,以便获得正确的输出。

#include<stdio.h>
void main()
{
    char b[2][20];
    int i;
    for(i=0;i<2;i++)
    {
            scanf("%s",b[i]);
    }
    for(i=0;i<2;i++)
    {
            printf("%s\n",b[i]);
    }
}