sprintf方法,sprintf的作用

http://www.itjxue.com  2023-01-06 00:08  来源:未知  点击次数: 

c语言sprintf是什么意思,和printf神马区别

printf是进行画面输出的方法,起到同样效果但输出结果是字符串对象的方法是sprintf。sprintf的"s"我们可以看作是"String"的"s",这样就记住了该方法的意义。

sprintf常常用于那些使用字符串类方法来处理生成不规则的字符串的场合。

int printf( const char *format [, argument]... );

printf只是格式化输出参数到标准输出

int sprintf( char *buffer, const char *format [, argument] ... );

sprintf除了安格式输出外,将输出字节串存入buffer

#include stdio.h

void main( void )

{

char buffer[200], s[] = "computer ", c = 'l ';

int i = 35, j;

float fp = 1.7320534f;

/* Format and print various data: */

j = sprintf( buffer, "\tString: %s\n ", s );

j += sprintf( buffer + j, "\tCharacter: %c\n ", c );

j += sprintf( buffer + j, "\tInteger: %d\n ", i );

j += sprintf( buffer + j, "\tReal: %f\n ", fp );

printf( "Output:\n%s\ncharacter count = %d\n ", buffer, j );

}

算了再说下fprintf()

int fprintf( FILE *stream, const char *format, ... ); fprintf()函数根据指定的format(格式)(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值.

void main( void )

{

int i = 10;

double fp = 1.5;

char s[] = "this is a string";

char c = '\n';

stream = fopen( "fprintf.out", "w" );

fprintf( stream, "%s%c", s, c );

fprintf( stream, "%d\n", i );

fprintf( stream, "%f\n", fp );

fclose( stream );

}

C++中如何调用sprintf方法

//头文件

#include stdio.h

int main(void)

{

int a, b;

char buffer[100];

a = 100;

b = 200;

//和在c里使用没什么区别

sprintf(buffer, "%d", a + b);

printf("%s", buffer);

}

sprintf函数,如果第一个参数与第三个参数相同

不要这样做,这是未定义的行为。

参考资料:网页链接

C 标准及POSIX?指定?sprintf?及其变体的行为在参数与目标缓冲区重叠时未定义。示例:

sprintf(dst, "%s and?%s", dst, t); // - 有错:未定义行为

如何用sprintf直接连接两个字符串

sprintf功能很强大,能连接任何格式的任何变量到一起,然后我用它来直接连接(或叫合并)两个字符串的时候,发现得不到正确的结果,然后呢?

1、错误做法1

int main ()

{

char * a1 = "shengruxiahua,siruzhaolu";

char * a2 = "wo ai beijing tian an men";

char * s;

s = malloc ( 10000 );

sprintf (s,"%s%s",a1,a2);

printf ("the s is %s\n",s);

return 0;

}

这样得不到正确结果,原因我不是很清楚了。

2、错误做法2

int main ()

{

char * a1 = "shengruxiahua,siruzhaolu";

char * a2 = "wo ai beijing tian an men";

char * s;

s = malloc ( 10000 );

sprintf (s,"%.*s%.*s",sizeof(a1),a1,sizeof(a2),a2);

printf ("the s is %s\n",s);

return 0;

}

这样也得不到正确的结果,因为sizeof(a1)结果为4,仅表示a1首地址的大小,就是4个字节啦。

2、正确做法

int main ()

{

char * a1 = "shengruxiahua,siruzhaolu";

char * a2 = "wo ai beijing tian an men";

char * s;

s = malloc ( 10000 );

sprintf (s,"%.*s%.*s",strlen(a1),a1,strlen(a2),a2);

printf ("the s is %s\n",s);

return 0;

}

这样就能把a1和a2这两个字符串直接连接到一起了。

C语言sprintf怎么使用?

sprintf函数的功能是把格式化的数据写入某个字符串缓冲区。

int sprintf( char *buffer, const char *format, [ argument] … );

buffer:char型指针,指向将要写入的字符串的缓冲区。

format:格式化字符串。

[argument]...:可选参数,可以是任何类型的数据。

示例

int main()

{

????char buffer[50];//大小50的char字符数组

????int n,a=5,b=3;//

????n=sprintf(buffer,"%d?+?%d?=?%d",a,b,a+b);//把a,b,a+b以第二个参数的形式写入buffer

????printf("[%s]is?a?string?%d?chars?long\n",buffer,n);/*“格式输出函数”*/

????return 0;

}

输出结果[5 + 3 = 8] is a string 13 chars long

sprintf格式的规格如下所示。[]中的部分是可选的。

%[指定参数][标识符][宽度][.精度]指示符

若想输出'%'本身时, 请使用'%%'处理。

1. 处理字符方向。负号时表示从后向前处理。

2. 填空字元。 0 的话表示空格填 0;空格是内定值,表示空格就放着。

3.?字符总宽度。为最小宽度。

4. 精确度。指在小数点后的浮点数位数。

转换字符

%% 印出百分比符号,不转换。

%c 整数转成对应的 ASCII 字元。

%d 整数转成十进位。

%f 倍精确度数字转成浮点数。

%o 整数转成八进位。

%s 整数转成字符串。

%x 整数转成小写十六进位。

%X 整数转成大写十六进位。

(责任编辑:IT教学网)

更多

推荐网站经济文章