精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
大家初学C语言,写“Hello World!”程序,要用到printf输出函数,把字符串输出到DOS窗口里。
print的语法形式如下:int printf( const char *format [, argument]... );
注意里面的[],表示后面的argument参数是可选的,可以不带参数。不带参数就是最简单的形式,把常量字符串输出下,比如printf("Hello World!")就是输出Hello World到DOS窗口里。
稍微难理解的是格式化参数了。格式化机制是实现后面的参数按何种形式和细节输出的技术。简单举例如下:printf("%s","Hello World!")也可以输出Hello World,里面的%s就是格式化参数,%是标志,它代表这个位置的输出要用后面参数的值,而不是当前的字面上的值。%后的是格式化类型,类型要和参数的类型一样。示例里""是字符串类型,所以用s对应。常见的对应有d整数,x十六进制整数,c字符,f小数浮点数。
理解了printf,就容易理解sprintf了。printf是把结果输出到DOS窗口里,而sprintf是输出到第一个参数里,sprintf的语法形式如下:int sprintf( char *buffer, const char *format [, argument] ... );
比如:
char cbuff[256];
sprintf(cbuff,"%s","Hello World!");
这2行代码执行过后cbuff变量里的值就是Hello World。
用sprintf生成的变量可以用于界面输出和报表输出,是经常用的技术。
理解了sprintf就容易理解sscanf了,因为2者是相反效果。sprintf是生成结果字符串,sscanf是用字符串生成结果,把字符串根据格式格式化参数,把字符串的部分内容根据格式化类型和细节转换给参数。
sscanf的语法形式如下:int sscanf( const char *buffer, const char *format [, argument ] ... );
虽然它的参数和sprintf一样,但是效果相反。比如sscanf("Hello World!",“%s",cbuff);会把第一个参数里的字符串转换保存到cbuff里,不过cbuff里保存的是Hello,这是因为空格会做为截断符号,空格后面的内容不进入转换。
DoModal应该限制了对话框其他控件的使用
模态的父窗口不能使用
还有就是也学会了sscanf和sprintf的使用
不错,有什么区别
sscanf是把第一个参数的值以第二个参数规定的形式赋值给第三个参数,sprintf是格式化字符串并输出。