sprintf()函数声明在stdio.h中,它是将数据写入字符串,而不是打印在显示器上,因此,该函数可以把多个元素合成一个字符串。
【利用sprintf()函数将三个项组合成一个字符串】
程序示例
#include<stdio.h>
#define MAX 20
char *s_gets(char *st, int n);
int main()
{
char first[MAX];
char last[MAX];
char formal[2 * MAX + 10];
double prize;
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);
sprintf(formal, "%s, %-19s: $%6.2f\n", last, first, prize);
puts(formal);
return 0;
}
//接口函数
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;
}
输出示例
enter your first name:
wang
enter your last name:
fei
enter your prize money:
12
fei, wang : $ 12.00
关于s_gets()函数:
在使用fgets()函数的时候,如果读到文件结尾或者出现读取错误,那么返回NULL,s_gets()函数跳过了这个过程,如果字符串中出现换行符,就用空字符替换它;如果出现空字符,则丢弃该输入行的其余字符,然后返回fgets()相同的值。