C编程从用户那里获取信息
这是我第一次使用C 我需要要求用户输入一些信息C编程从用户那里获取信息,c,string,C,String,这是我第一次使用C 我需要要求用户输入一些信息 #include <stdio.h> #include <stdlib.h> int main(void) { int age; int i; char last_name[20]; char first_name[20]; double wight; char gender[1]; printf("Enter your age: "); scanf("
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int age;
int i;
char last_name[20];
char first_name[20];
double wight;
char gender[1];
printf("Enter your age: ");
scanf("%d", &age);
printf("Enter your last name: ");
fgets(last_name, 18, stdin);
i = strlen(last_name)-1;
if( last_name[ i ] == '\n')
last_name[i] = '\0';
printf("Enter your first name: ");
fgets(first_name, 18, stdin);
i = strlen(first_name)-1;
if( first_name[ i ] == '\n')
first_name[i] = '\0';
printf("Enter your wight: ");
scanf("%lf", &wight);
printf("Enter your gender m/f: ");
gets(gender);
printf("You entered %s successfully\n ", first_name);
return EXIT_SUCCESS;
}
#包括
#包括
内部主(空){
智力年龄;
int i;
char last_name[20];
char first_name[20];
双怀特;
性别[1];
printf(“输入您的年龄:”);
scanf(“%d”和年龄);
printf(“输入您的姓氏:”);
fgets(姓氏18,标准名称);
i=斯特伦(姓氏)-1;
如果(姓氏[i]='\n')
姓氏[i]='\0';
printf(“输入您的名字:”);
fgets(名字,18,标准名称);
i=斯特伦(名字)-1;
如果(名字[i]='\n')
名字[i]='\0';
printf(“输入您的权限:”);
扫描频率(“%lf”、&wight);
printf(“输入您的性别m/f:”);
获得(性别);
printf(“您成功输入了%s”,第一个\u名称);
返回退出成功;
}
如果我运行这个程序
输入您的年龄:23
输入您的姓氏:输入您的名字:
我没有给我机会输入姓氏
它跳到下一行
我正在使用EclipseIDE输入
age
末尾的换行符将通过fgets()获取picket
您需要在stdin缓冲区中刷新此换行符,以确保它不是由fgets()
拾取的
使用
试试这个:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int age;
int i;
char last_name[20];
char first_name[20];
double wight;
char gender[1];
printf("Enter your age: ");
scanf("%d", &age);
printf("Enter your last name: ");
__fpurge ( stdin );
fgets(last_name, 18, stdin);
i = strlen(last_name)-1;
if( last_name[ i ] == '\n')
last_name[i] = '\0';
printf("Enter your first name: ");
fgets(first_name, 18, stdin);
i = strlen(first_name)-1;
if( first_name[ i ] == '\n')
first_name[i] = '\0';
printf("Enter your wight: ");
scanf("%lf", &wight);
printf("Enter your gender m/f: ");
__fpurge ( stdin );
gets(gender);
printf("You entered %s successfully\n ", first_name);
return EXIT_SUCCESS;
}
#包括
#包括
内部主(空){
智力年龄;
int i;
char last_name[20];
char first_name[20];
双怀特;
性别[1];
printf(“输入您的年龄:”);
scanf(“%d”和年龄);
printf(“输入您的姓氏:”);
__fpurge(stdin);
fgets(姓氏18,标准名称);
i=斯特伦(姓氏)-1;
如果(姓氏[i]='\n')
姓氏[i]='\0';
printf(“输入您的名字:”);
fgets(名字,18,标准名称);
i=斯特伦(名字)-1;
如果(名字[i]='\n')
名字[i]='\0';
printf(“输入您的权限:”);
扫描频率(“%lf”、&wight);
printf(“输入您的性别m/f:”);
__fpurge(stdin);
获得(性别);
printf(“您成功输入了%s”,第一个\u名称);
返回退出成功;
}
如果我运行该程序,请输入您的年龄:23输入您的姓氏:输入您的名字:
这发生在代码中的第一个scanf
之后:
scanf("%d", &age);
当您将age
作为输入时,输入流中仍有换行符,您需要在进行下一次输入之前清除它:
scanf("%d", &age);
while(getchar() != '\n'); //eat up trailing newline
fgets(last_name, 18, stdin);
这是您更正的程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int age;
int i;
char last_name[20];
char first_name[20];
double wight;
char gender[1];
printf("Enter your age: ");
scanf("%d", &age);
printf("Enter your last name: ");
while(getchar() != '\n'); //eat up trailing newline
fgets(last_name, 18, stdin);
i = strlen(last_name)-1;
if( last_name[ i ] == '\n')
last_name[i] = '\0';
printf("Enter your first name: ");
fgets(first_name, 18, stdin);
i = strlen(first_name)-1;
if( first_name[ i ] == '\n')
first_name[i] = '\0';
printf("Enter your wight: ");
scanf("%lf", &wight);
printf("Enter your gender m/f: ");
while(getchar() != '\n'); //eat up trailing newline
gets(gender);
printf("You entered %s successfully\n ", first_name);
return EXIT_SUCCESS;
}
为什么不扫描(“%s”,名字)等等?不建议对输入流使用fflush()
,因为没有指定输入流的行为。所以fflush(stdin)
不应该被使用@是的,这就是为什么我给了一个很好的替代品
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int age;
int i;
char last_name[20];
char first_name[20];
double wight;
char gender[1];
printf("Enter your age: ");
scanf("%d", &age);
printf("Enter your last name: ");
while(getchar() != '\n'); //eat up trailing newline
fgets(last_name, 18, stdin);
i = strlen(last_name)-1;
if( last_name[ i ] == '\n')
last_name[i] = '\0';
printf("Enter your first name: ");
fgets(first_name, 18, stdin);
i = strlen(first_name)-1;
if( first_name[ i ] == '\n')
first_name[i] = '\0';
printf("Enter your wight: ");
scanf("%lf", &wight);
printf("Enter your gender m/f: ");
while(getchar() != '\n'); //eat up trailing newline
gets(gender);
printf("You entered %s successfully\n ", first_name);
return EXIT_SUCCESS;
}
Enter your age: 25
Enter your last name: last_Name
Enter your first name: First_Name
Enter your wight: 70
Enter your gender m/f: M
You entered First_Name successfully