使用以下代码:
char *name = malloc(sizeof(char) + 256);
printf("What is your name? ");
scanf("%s", name);
printf("Hello %s. Nice to meet you.\n", name);
Run Code Online (Sandbox Code Playgroud)
用户可以输入他们的名字,但是当他们输入一个像空格一样的名字时Lucas Aardvark,scanf()只需切断后面的所有内容Lucas.如何设置scanf()允许空格
下面的代码在我编译它时会给出奇怪的o/p.
main() {
char name[3];
float price[3];
int pages[3], i;
printf ( "\nEnter names, prices and no. of pages of 3 books\n" ) ;
for ( i = 0 ; i <= 2 ; i++ )
scanf ("%c %f %d", &name[i], &price[i], &pages[i] );
printf ( "\nAnd this is what you entered\n" ) ;
for ( i = 0 ; i <= 2 ; i++ )
printf ( "%c %f %d\n", name[i], price[i], pages[i] );
}
Run Code Online (Sandbox Code Playgroud)
但是如果我们在%c之前给scanf语句中的空格,它给出了正确的o/p.
任何人都可以解释我为什么会这样?
更新: - …
scanf像这样放置空间的目的是什么
scanf(" %c",&ch)
Run Code Online (Sandbox Code Playgroud)
代替
scanf("%c",&ch)?
Run Code Online (Sandbox Code Playgroud)
什么是输入缓冲区fflush(stdin)?
的时候,不包括%d和%C规范之间的空白在scanf函数的在下面的程序格式字符串,并在运行时间期间为"4小时"给输入,则输出是"整数= 4和字符= .
在这种情况下,变量"c"如何获取输入,如果我在%d和%c规范之间包含空格,它会有什么不同?
#include <stdio.h>
int main()
{
char c;
int i;
printf("Enter an Integer and a character:\n");
scanf("%d %c",&i,&c);
printf("Integer = %d and Character = %c\n",i,c);
getch();
}
Run Code Online (Sandbox Code Playgroud) 我是C的初学者,目前我正在经历一些麻烦.我在尝试在char矩阵中输入值然后打印它时遇到问题.
这是我的代码:
#include <stdio.h>
#define N 3
int main( )
{
char arr[N][N]={{0}};
int i,j;
for(i=0;i<N;i++){
for(j=0;j<N;j++){
scanf("%c",&arr[i][j]);
}
}
for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf("%c",arr[i][j]);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出结束时缺少两个字符.
我不知道我做错了什么,我想理解我的错误:
- 这是涉及scanf功能的某种问题吗?我之前听说过缓冲区,那有关系吗?问题来自我按下输入的那一刻?
- 我以错误的方式初始化我的矩阵?
- 在这种情况下使用getchar()会更好吗?如果是这样,我怎样才能设法准确输入N*N值而不是更多?
非常感谢.约旦.