C语言中的字符数组输入和输出问题
我编写了以下代码来读取字符数组并打印它C语言中的字符数组输入和输出问题,c,C,我编写了以下代码来读取字符数组并打印它 #include<stdio.h> #include<stdlib.h> #include<conio.h> void read_array(char a[],int n); void print_array(char a[],int n); int main(void) { char a[100]; int n; printf("\nEnter n:"); scanf("%d",&
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void read_array(char a[],int n);
void print_array(char a[],int n);
int main(void)
{
char a[100];
int n;
printf("\nEnter n:");
scanf("%d",&n);
printf("\nEnter the characters:");
read_array(a,n);
printf("\nThe array now is: ");
print_array(a,n);
getch();
return 0;
}
void read_array(char a[],int n)
{
int i;
for(i=0;i<n;i++)
scanf("%c",&a[i]);
}
void print_array(char a[],int n)
{
int i;
for(i=0;i<n;i++)
printf("a[%d]=%c\n",i,a[i]);
}
#包括
#包括
#包括
void read_数组(char a[],int n);
无效打印_数组(字符a[],整数n);
内部主(空)
{
chara[100];
int n;
printf(“\n输入n:”);
scanf(“%d”和“&n”);
printf(“\n输入字符:”);
读_数组(a,n);
printf(“\n数组现在是:”);
打印_数组(a,n);
getch();
返回0;
}
无效读取数组(字符a[],整数n)
{
int i;
对于(i=0;i您正在读取的第一个字符是输入15
的换行符。使用fgets()
和sscanf()
-您会更快乐。在用于获取字符值的scanf函数中,使用getche或getchar函数。这将允许您捕获包括新行在内的所有字符。您可以跳过第一个字符并复制其余字符。在使用scanf进行字符数组输入的情况下,它还可以捕获y的回车键ou在新行上输入输入时按下,因此发生了此问题
You may use getchar if you want each character to be present as input.
您确定它是空的吗?或者您的输出是否在a[0]=
和a[1]之间有一个空行=
已回滚。输入和输出属于引号块,而不是代码块。@geocet说是谁?如果没有固定宽度的格式,I/O就没有意义怎么办?更不用说一些高亮显示是免费的代码块。Meta似乎也不同意您的观点:@carl:语法高亮显示在非代码块上没有用处,效果很好对于固定宽度。我必须在这里使用@GeogoSet,语法突出显示对于非代码块来说通常很烦人。但是,这里需要pre-tag,因为间距在所有这些x中都很重要(所以我添加了它)。不会跳过所有的空白。@user567797,我想这取决于你如何使用它。不过这是正常的使用情况。如果这样做更简单的话,你可以在第二组输入中使用getch()
。实际上,这里不需要*scanf
(对于字符串,你仍然需要它作为数字)因为fgets
将为您提供一个字符串。如果您正在寻找一种健壮的输入方法,请参阅
The array now is:
a[0]=
a[1]=x
a[2]=x
a[3]=x
a[4]=x
a[5]=x
a[6]=
a[7]=
a[8]=
a[10]=
a[11]=x
a[12]=x
a[13]=x
a[14]=x
You may use getchar if you want each character to be present as input.