gpt4 book ai didi

c - 带空格的 Scanf 根本不读取

转载 作者:太空宇宙 更新时间:2023-11-04 07:41:08 25 4
gpt4 key购买 nike

   #include <stdio.h>

int main(){
int i;
char name[10],surname[10],id[12],dpart[20];
printf("******** ID Documentation ***********\n\n\n");
printf("1) What is your Name? \n");
scanf("%s",&name);
printf("2) What is your Surname? \n");
scanf("%s",&surname);
printf("3) What is your ID Number \n");
scanf("%s",&id);
printf("4) What is your Department? \n");
scanf("%[^\n]",&dpart);
system("CLS");
for(i=0;i<50;i++){printf("*");}printf("\n");
printf("|");
for(i=0;i<48;i++){printf("%%");}
printf("|");printf("\n");printf("|");
for(i=0;i<14;i++){printf("%%");}
printf(" STUDENT ID CARD ");for(i=0;i<17;i++){printf("%%");}printf("|\n");printf("|");
for(i=0;i<48;i++){printf("%%");}
printf("|\n");
printf(" //////// NAME: %6s ",name);for(i=0;i<26;i++){printf("/");}printf(" \n|");for(i=0;i<48;i++){printf("-");}printf("|\n");
printf(" //////// SURNAME: %6s ",surname);for(i=0;i<23;i++){printf("/");}printf(" \n|");for(i=0;i<48;i++){printf("-");}printf("|\n");
printf(" //////// ID NUMVER: %11s ",id);for(i=0;i<16;i++){printf("/");}printf(" \n|");for(i=0;i<48;i++){printf("-");}printf("|\n");
printf(" //////// DEPARTMENT: %22s ",dpart);for(i=0;i<4;i++){printf("/");}printf(" \n|");for(i=0;i<48;i++){printf("-");}printf("|\n");
printf("|");
for(i=0;i<48;i++){printf("%%");}
printf("|");printf("\n");
printf("|");
for(i=0;i<48;i++){printf("%%");}
printf("|");printf("\n");
printf("|");
for(i=0;i<48;i++){printf("%%");}
printf("|");printf("\n");for(i=0;i<50;i++){printf("*");}
}

我正在帮助我的一位 friend 做作业。我们必须读取部门数据而不是将其显示在身份证上,但是当涉及到读取部门时,程序会跳过它并将输入的 ID 号值添加到部门。Ps:我知道使用 scanf() 是一项非常糟糕的工作,但他们没有学到任何其他东西所以我不能建议他使用 sscanf而且写出数据的时候也不在乎那些乱七八糟的代码,还行

最佳答案

问题是您在输入缓冲区中有一个未使用的换行符。格式字符串中的空格将占用零个或多个空白字符,因此您可以通过更改此行以在 % 之前包含一个空格来解决此问题,如下所示:

scanf(" %[^\n]",dpart);

关于c - 带空格的 Scanf 根本不读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3990080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com