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
是扫描单个字符。
也就是说,在你的情况下,
- 您没有为数组中的空终止符分配间隔符。
- 您也没有以 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]);
}
}
今天,我写了一个 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
是扫描单个字符。
也就是说,在你的情况下,
- 您没有为数组中的空终止符分配间隔符。
- 您也没有以 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]);
}
}