C语言中的输入输出函数详解与比较scanf,sscanf,printf,sprintf,fprintf

时间:2022-10-25 12:38:30

        这些函数对于从事C语言开发的人员来说经常用到。大学期间学是软件工程,对于c语言接触的不多,既然从事相关的开发工作,自然要多一些记录了,便于查阅和复习,加深自己的理解。这几个函数很多人都遇到过,还是有些需要注意的地方。这里只介绍工作中经常用到的一些参数,以后遇到了再逐渐添加。

       函数原型 int   scanf(const char* fmt,[argument]...)    从标准输入中读入,函数返回成功赋值的项数,到文件结尾或者出错时候返回EOF,  这个函数自然不必多说,接触过C语言的想必都知道。                                

      函数原型 int  sscanf(const char *buf, const char* fmt,[argument]...) 从一个字符串中读进与指定格式指定相符的数据。返回格式化输入参数的数目。与scanf有相之处,前者从标准设备中输入,后者从字符串中输入,在读取文件中的数据时经常用到。sscanf支持集合操作,下面通过一些例子熟悉它的使用:

     C语言中的输入输出函数详解与比较scanf,sscanf,printf,sprintf,fprintf

输出结果:

       C语言中的输入输出函数详解与比较scanf,sscanf,printf,sprintf,fprintf

这是sscanf最常见的用法了。*的使用,这个也经常用到,对字符串的某些数据进行过滤。

    C语言中的输入输出函数详解与比较scanf,sscanf,printf,sprintf,fprintf

输出结果

     C语言中的输入输出函数详解与比较scanf,sscanf,printf,sprintf,fprintf

这个可是很有用的啦,比如上例中的字符串中有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是把格式化的数据输出到一个文件/流中。

使用方法是大同小异的。根据需要进行选择