条件检查 scanf () 或获取输入
condition check on scanf ()or get on input
我必须从用户输入的全名中打印名字、中间名和姓氏的缩写,例如 ram kumar shahu
as r.k. shahu
。问题是如果我只得到名字和姓然后我应该像 r. shahu
.
这样打印
以下是我目前的代码。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char fname[10],mname[10],lname[10];
printf("Enter the name:\n");
if(lname==NULL)
{
scanf("%s %s ",fname,mname);
}
else
scanf("%s %s %s",fname,mname,lname);
if(lname==NULL)
{
printf("%c.%s",fname[0],mname);
}
else
printf("%c.%c.%s",fname[0],mname[0],lname);
return 0;
}
首先,您正在处理不知道输入的长度 的情况。我建议您采用以下方法。
char fname[10],mname[10],lname[10];
char line[30];
int state;
printf("Enter the name:\n");
fgets(line, sizeof line, stdin);
state = sscanf(line, "%9s %9s %9s", fname, mname, lname);
if(state == 2){
printf("%c.%s\n",fname[0], mname);
} else if(state == 3){
printf("%c.%c.%s\n",fname[0], mname[0], lname);
}
我必须从用户输入的全名中打印名字、中间名和姓氏的缩写,例如 ram kumar shahu
as r.k. shahu
。问题是如果我只得到名字和姓然后我应该像 r. shahu
.
以下是我目前的代码。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char fname[10],mname[10],lname[10];
printf("Enter the name:\n");
if(lname==NULL)
{
scanf("%s %s ",fname,mname);
}
else
scanf("%s %s %s",fname,mname,lname);
if(lname==NULL)
{
printf("%c.%s",fname[0],mname);
}
else
printf("%c.%c.%s",fname[0],mname[0],lname);
return 0;
}
首先,您正在处理不知道输入的长度 的情况。我建议您采用以下方法。
char fname[10],mname[10],lname[10];
char line[30];
int state;
printf("Enter the name:\n");
fgets(line, sizeof line, stdin);
state = sscanf(line, "%9s %9s %9s", fname, mname, lname);
if(state == 2){
printf("%c.%s\n",fname[0], mname);
} else if(state == 3){
printf("%c.%c.%s\n",fname[0], mname[0], lname);
}