/***************************************************************************************************************************
说明:1.sprintf与printf的区别
sprintf是将数据一个地方,而printf是将数据打印显示在屏幕上
2.puts于gets配对使用,同样fputs于fgets也配对使用。
注意:gets丢弃了输入换行符,但是puts会在输出的末尾添加换行符;与fputs不同的是,fputs不会在输出的末尾添加换行符,fgets保留了输入的换行符。
3.gets函数:输入一个字符串,scanf只能输入一个
说明:1.sprintf与printf的区别
sprintf是将数据一个地方,而printf是将数据打印显示在屏幕上
2.puts于gets配对使用,同样fputs于fgets也配对使用。
注意:gets丢弃了输入换行符,但是puts会在输出的末尾添加换行符;与fputs不同的是,fputs不会在输出的末尾添加换行符,fgets保留了输入的换行符。
3.gets函数:输入一个字符串,scanf只能输入一个
*************************************************************************************************************************/
#include<stdio.h>
#define MAX 20
char * s_gets(char * st,int n);
void gets_test();
char * s_gets(char * st,int n)
{
char *ret_val;
int i = 0;
//标准输入设备(键盘)
ret_val = fgets(st,n,stdin);
if(ret_val)
{
while(st[i]!='\n'&&st[i]!='\0')
i++;
if(st[i]=='\n') //如果换行
st[i]='\0'; //加上结束符号
else
while(getchar() !='\n') //不是换行,跳出本次循环
continue;
}
return ret_val; //返回输入的字符
}
//验证gets函数
void gets_test()
{
char words[MAX];
gets(words); //典型用法
printf("gets=%s\n",words);
puts(words);
}
int main(void)
{
char first[MAX];
char last[MAX];
char formal[2*MAX+10];
double prize;
gets_test();
puts("Enter your first name:");
s_gets(first,MAX);
puts("Enter your last name:");
s_gets(last,MAX);
puts("Enter your prize money:");
scanf("%lf",&prize);
//将last,first,prize的值输入到formal中
sprintf(formal,"%s,%-19s:$%6.2f\n",last,first,prize);
puts(formal);
return 0;
}