C语言:扫描并打印名称

C Language: Scanning and printing Names

今天,我写了一个 C 程序来从键盘扫描两个名字并将其打印在显示器上,这里是

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 的初学者。我应该怎么做才能使其成为正确的程序。

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

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

  1. 您没有为数组中的空终止符分配间隔符。
  2. 您也没有以 null 终止输入。所以就算想也不能当sting.

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

char *b[1];

这里可以将数组中的值扫描为:

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


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

char b[2][100];

现在在这里,100 指定您要输入的字符串的字符数,2 是您输入的字符串的值数。
我希望这会消除你的疑虑。

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

#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]);
    }
}