为什么 scanf() 会加倍并合并为一个?

问题描述

我正在为这个 C 项目使用 Codeblocks IDE 和 mingw 编译器

我知道这是编译器的问题,这就是为什么必须根据我正在使用的当前编译器编写某些程序的原因;这个程序来自我的一本旧书,它提示用户使用Turbo C

因此,我将 flushall() 转换为 fflush(NULL),并且没有返回更多错误

尽管如此,由于某种原因,前 2 个 scanf() 被“连接”在一起,因此,第一个(据说)输入被忽略了。

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main() {
    int i,n;
    char name[15][20];
    void namesort(char name[15][20],int);
    ("cls");

    printf("\n\tEnter the number of names to be entered: ");
    scanf("%d",&n);

    printf("\n\n\t=====Input Data=====\n");
    for(i=0; i<n; i++) {
        fflush(NULL);
        printf("\tEnter a name: ");
        gets(name[i]);
    }

    namesort(name,n);
    printf("\n\n\t=====After Sorting=====\n");
    for(i=0; i<n; i++) {
        printf("%s\n\t",name[i]);
    }
    getch();
}

void namesort(char name[15][20],int n) {
    int i,j;
    char *temp;

    for(i=0; i<n; i++) {
        if(strcmp(name[j],name[j+1]) > 0) {
            strcpy(temp,name[j]);
            strcpy(name[j],name[j+1]);
            strcpy(name[j+1],temp);
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)