我编写了以下代码来读取字符数组并打印出来。
#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]);
}
输入:
Enter n:15 Enter the characters:xxxxx xxxxx
输出:
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
我的输入a[5]
到a[9]
中的字符是空白字符。那么如何输出a[0]=(a blank)
?
答案 0 :(得分:2)
您正在阅读的第一个字符是您输入15
时输入的换行符。使用fgets()
和sscanf()
- 您会更开心。
答案 1 :(得分:1)
在scanf函数中获取字符值使用getche或getchar函数。这将允许您捕获包括新行在内的所有字符。你可以跳过第一个字符并复制其余字符。
答案 2 :(得分:0)
在使用scanf进行char数组输入的情况下,它还会捕获您在新行中输入输入时按下的Enter键,因此会发生此问题。
You may use getchar if you want each character to be present as input.