这些函数对于从事C语言开发的人员来说经常用到。大学期间学是软件工程,对于c语言接触的不多,既然从事相关的开发工作,自然要多一些记录了,便于查阅和复习,加深自己的理解。这几个函数很多人都遇到过,还是有些需要注意的地方。这里只介绍工作中经常用到的一些参数,以后遇到了再逐渐添加。
函数原型 int scanf(const char* fmt,[argument]...) 从标准输入中读入,函数返回成功赋值的项数,到文件结尾或者出错时候返回EOF, 这个函数自然不必多说,接触过C语言的想必都知道。
函数原型 int sscanf(const char *buf, const char* fmt,[argument]...) 从一个字符串中读进与指定格式指定相符的数据。返回格式化输入参数的数目。与scanf有相之处,前者从标准设备中输入,后者从字符串中输入,在读取文件中的数据时经常用到。sscanf支持集合操作,下面通过一些例子熟悉它的使用:
输出结果:
这是sscanf最常见的用法了。*的使用,这个也经常用到,对字符串的某些数据进行过滤。
输出结果
这个可是很有用的啦,比如上例中的字符串中有7个数据,而我们能够用到的只有其中3个,加一个*就不读入相关的信息了,那么就不需要定义7个变量了,只要定义三个变量就行了。
下面的一些用法也比较常见:
(1) 取指定长度的字符串:
sscanf("asdfgh","%3s",buf);
printf("buf = %s\n",buf);
输出结果:
buf = asd
(2)取包含指定字符集的字符串:
sscanf("321dfadCACAcddscd","%[1-9a-z]",buf);
printf("buf = %s\n",buf);
输出结果:
buf = 321dfad
遇到不是指定字符集的第一个字符串,就终止了。结果不是 buf = 321dfadcddscd 哦。如果想使结果是 buf = 321dfadcddscd ,可是跳过中间大写字母,那么可以这样:
sscanf("321dfadCACAcddscd","%[1-9a-z]%*[A-Z]%[1-9a-z]",buf,buf1);
strcat(buf,buf2);
(3)取到指定字符集为止的字符串:
sscanf("cdacdfaDCACA","%[^A-Z]",buf);
printf("buf = %s\n",buf);
输出结果
buf = cdacdfa
printf,sprintf,fprintf的区别:
printf把格式化的数据输出到标准输出设备中,sprintf把格式化的数据输出到字符串中,函数原型是int sprintf(char *buf ,const char *fmt,[arguments]...),fprintf是把格式化的数据输出到一个文件/流中。
使用方法是大同小异的。根据需要进行选择