C语言编写一个输入输出姓名的问题,谢谢

编写一段输入输出姓名的程序,要求姓名为字符,最长不超过20个字符。不能为空。谢谢
更详细点的要求:要求姓名为字符,最长不超过20个字符。不能为空。如果为空或不是字符类型的提示输入错误,并要求重新输入。谢谢,急求!!!

姓名之间可以输入空格,如:gao jinshan

修改好了,加了判断了!

#include <stdio.h>

#define N 20
main()
{
char name[N+1]={0},ch;
int i=0;

printf("Please enter your name:");
while(1)
{
while((ch=getchar())!='\n' && i<20)
{
name[i++]=ch;
}
if(name[0]!='\0')
{
break;
}
printf("Please enter your name, again:);

}
printf("hello %s!\n", name);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-12
//初看题目觉得挺简单,我汗,调好了!copy即可!
#include<stdio.h>
#include<string.h>
void main()
{
int i;
lebal:
char name[100],temp;
i=0;
printf("Please enter your name:\n");
while(true)
{
scanf("%c", &temp);
if(temp==' ')
{
printf("wrong input:have space\n");
for(;temp!='\n';)
scanf("%c", &temp);
goto lebal;
}
if(temp=='\n')
break;
name[i]=temp;
i++;
if(i>20)
{
printf("wrong input:the size name is too long\n");
for(;temp!='\n';)
scanf("%c", &temp);
goto lebal;
}

}
name[i]='\0';
printf("hello %s\n", name);
}
第2个回答  2008-06-12
main()
{
char name[20];
printf("Please enter your name:");
scanf("%s", name);
printf("hello %s\n", name);
}
第3个回答  2008-06-12
#include <stdio.h>
int main(void)
{
char name[21];/*最后一个元素用于保存结束字符*/
printf("Name:");
scanf("%20s", name);/*读取20个字符组合字符串*/
printf("hello %s\n", name);
return 0;
}
相似回答