小编JOH*_*RAS的帖子

为什么for循环没有结束?

我编写了一个程序,将变量定义npint并使用 对其进行初始化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)

c

3
推荐指数
2
解决办法
213
查看次数

\n 不保留在缓冲区中吗?

为什么当我只使用整数时程序运行良好?当我为变量“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)

c printf buffer ascii

0
推荐指数
1
解决办法
50
查看次数

标签 统计

c ×2

ascii ×1

buffer ×1

printf ×1