C语言fscanf函数了解

来源:互联网 发布:网络诈骗电话举报中心 编辑:程序博客网 时间:2024/06/05 02:18

 fscanf函数从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。

原型:int fscanf(FILE *stream, char *format,[argument...]);

返回值:返回实际被转换并赋值的输入项的数目。

  %d:读入一个十进制整数。

  %i :读入十进制,八进制,十六进制整数,与%d类似,但是在编译时通过数据前置来区分进制,如加入“0x”则是十六进制,加入“0”则为八进制。例如串“031”使用%d时会被算作31,但是使用%i时会算作25。


scanf(...)函数与fscanf(stdin,...)相同。

sscanf(s,...)函数与scanf(...)等价,所不同的是,前者的输入字符来源于字符串s.

------------------------------------------

下面是百科中的两个DEMO

------------------------------------------


[cpp] view plaincopy
  1. /************************************************************************/  
  2. /* fscanf函数DEMO 
  3. */  
  4. /************************************************************************/  
  5.   
  6.   
  7. #include <stdio.h>  
  8. #include <stdlib.h>  
  9. #define FIRST_DEMO  
  10. //#define SECOND_DEMO  
  11. #ifdef FIRST_DEMO  
  12. int main(void)  
  13. {  
  14.     int i;  
  15.     printf("Input an integer:");  
  16.     /*read an integer from the standard input stream*/  
  17.     if (fscanf(stdin,"%d",&i))  
  18.     {  
  19.         printf("The integer read was :%d\n",i);  
  20.     }   
  21.     else  
  22.     {  
  23.         fprintf(stderr,"Error reading an integer from stdin.\n");  
  24.         exit(1);  
  25.     }  
  26.     system("pause");  
  27.     return 0;  
  28. }  
  29. #elif defined SECOND_DEMO  
  30.     FILE *stream;  
  31.     int main(void)  
  32.     {  
  33.         long l;  
  34.         float fp;  
  35.         char s[81];  
  36.         char c;  
  37.         stream=fopen("fscanf.out","w+");  
  38.         if (stream == NULL)  
  39.         {  
  40.             printf("The file fscanf.out was not opened.\n");  
  41.         }   
  42.         else  
  43.         {  
  44.             fprintf(stream,"%s %ld %f%c","a-string",65000,3.14159,'x');   //%c前没有空格  
  45.             /*set pointer to beginning of file*/  
  46.             fseek(stream,0L,SEEK_SET);  
  47.             /*Read data back from file*/  
  48.             fscanf(stream,"%s",s);  
  49.             fscanf(stream,"%ld",&l);  
  50.             fscanf(stream,"%f",&fp);  
  51.             fscanf(stream,"%c",&c);  
  52.             /*output data read*/  
  53.             printf("%s\n",s);  
  54.             printf("%ld\n",l);  
  55.             printf("%f\n",fp);  
  56.             printf("c=%c\n",c);  
  57.             fclose(stream);  
  58.         }  
  59.         system("pause");  
  60.         return 0;  
  61.     }  
  62.   
  63. #endif  
0 0
原创粉丝点击