我编写了一个程序,将变量定义np为int并使用 对其进行初始化getchar。但这样程序就不会退出for循环。如果我使用scanf它运行良好。为什么会发生这种情况?
#include <stdio.h>
#include <stdlib.h>
typedef struct parents {
char fathername[30];
char Mothername[50];
} parents;
struct person {
char firstname[30];
char Lastname[30];
int age;
parents p;
};
int main() {
int np;
printf("The number of people: ");
np = getchar(); //scanf("%d", &np);
struct person *point = malloc(np * sizeof(struct person));
int i = 0;
for (i = 0; i < np; i++) {
printf("Give your name: ");
scanf("%s", &point[i].firstname); …Run Code Online (Sandbox Code Playgroud) 为什么当我只使用整数时程序运行良好?当我为变量“a”插入一个数字然后按 Enter 键后,不会\n保留在缓冲区中吗?如果它确实存在,那为什么我b也可以初始化?如果我定义b为 char 那么b输出将是b 10;换句话说,空换行符。例如,如果我想多次使用(使用什么?)为许多人输入一个名字,我会有什么问题吗?我需要一个清除缓冲区的函数吗?那么出了什么问题以及如何解决这个问题
#include <stdio.h>
int main() {
int a,b;
printf("a ");
scanf("%d",&a);
printf("a=%d",a);
printf("\nb ");
scanf("%d",&b);
printf("b=%d",b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)