c/c++ 数据类型转换总结
来源:互联网 发布:软件上线报告 编辑:程序博客网 时间:2024/05/27 14:14
Example
/* SSCANF.C: This program uses sscanf to read data items
* from a string named tokenstring, then displays them.
*/
#include <stdio.h>
void main( void )
{
char tokenstring[] = "15 12 14...";
char s[81];
char c;
int i;
float fp;
/* Input various data from tokenstring: */
sscanf( tokenstring, "%s", s );
sscanf( tokenstring, "%c", &c );
sscanf( tokenstring, "%d", &i );
sscanf( tokenstring, "%f", &fp );
/* Output the data read */
printf( "String = %s/n", s );
printf( "Character = %c/n", c );
printf( "Integer: = %d/n", i );
printf( "Real: = %f/n", fp );
}
Output:
String = 15
Character = 1
Integer: = 15
Real: = 15.000000
sscanf的注意事项:
1、把原字符串转换为另一个字符串时,只会把以原字符串的第一个连续字符串读取出来,空格与回车后的字符会被节掉
2、转换为数值时,必须以数字开头
Example
/* SPRINTF.C: This program uses sprintf to format various
* data and place them in the string named 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 );
}
Output:
String: computer
Character: l
Integer: 35
Real: 1.732053
character count = 71
二、atoi atof atol (stdlib.h)
double atof( const char *string );
int atoi( const char *string );
__int64 _atoi64( const char *string );
long atol( const char *string );
三、_itoa _ltoa 整形数据转换
从value转化到string,radix为数值的进制
char *_itoa( int value, char *string, int radix );
char *_ltoa( long value, char *string, int radix );
四、_ecvt _fcvt _gcvt
// Converts a double number to a string
char *_ecvt( double value, int count, int *dec, int *sign );
// Converts a floating-point number to a string
char *_fcvt( double value, int count, int *dec, int *sign );
// Converts a floating-point value to a string, which it stores in a buffer
char *_gcvt( double value, int digits, char *buffer );
前两个函数功能与用法相似,只是一个转换单精度一个是转换双精度,但第三个函数与它们的区别很大:
1、_ecvt与_fcvt的第二个参数count,表示有效数字的个数,与_gcvt的第二个参数digits一样。_ecvt与_fcvt的第三个参数dec表示小数点后的位数,第四个参数sign表示数值的正负,0表示正,1表示负。
2、_ecvt与_fcvt把浮点数转化为字符串后是没有正负符号与小数点的,它们会被存入后边的两个参数:dec、sign。而且它们会自动分配字符串的分配空间,也就是说只要调用了这两个函数,它们就自己分配空间来存储字符串,然后返回字符串的指针。
3、_gcvt函数也许更为常用。它需要用户自己分配一个缓冲区buffer来存储转换后的变量。这点与sprintf和atof等函数是一致的。还需要注意,它们没必要返回,也就是说没必要把它的返回值赋给其他变量。
4、_gcvt函数最方便的是它转换后的字符串是保有原数值的符号位与小数点的,也就是说忠实的反映了原数值,能够方便的显示出来。这是与_ecvt、_fcvt的最大区别
/* _GCVT.C: This program converts -3.1415e5
* to its string representation.
*/
#include <stdlib.h>
#include <stdio.h>
void main( void )
{
char buffer[50];
double source = -3.1415;
_gcvt( source, 3, buffer );
printf( "source: %f buffer: '%s'/n", source, buffer );
}
Output
source: -3.141500 buffer: '-3.14'
- c/c++ 数据类型转换总结
- c/c++ 数据类型转换总结
- C语言中隐式数据类型转换的总结
- 数据类型总结 (C++,C#)
- 数据类型总结(C++,C#)
- C++/C数据类型转换小结
- C中数据类型转换
- objective-C 数据类型转换
- c/c++数据类型转换
- C中数据类型转换
- C#:数据类型转换
- C语言数据类型转换
- C语言数据类型转换
- C语言数据类型转换
- C语音数据类型转换
- C数据类型转换
- C基本数据类型转换
- C语言数据类型转换
- java的instanseof运算符号
- Java多线程编程要点(二)------chuangxin01
- #include与#include
- 乐评人可以无视
- 办公室22条潜规则
- c/c++ 数据类型转换总结
- C#日期转换
- JSP分页技术
- FCKEditor 实现不同用户上传图片到各自文件夹下的配置
- poj 2524 并查集
- struts框架
- Ubuntu 下VIM使用指南
- 总结一下subversion
- 23种设计模式的形象比喻