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.