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
------------------------------------------
-
-
-
-
-
-
- #include <stdio.h>
- #include <stdlib.h>
- #define FIRST_DEMO
-
- #ifdef FIRST_DEMO
- int main(void)
- {
- int i;
- printf("Input an integer:");
-
- if (fscanf(stdin,"%d",&i))
- {
- printf("The integer read was :%d\n",i);
- }
- else
- {
- fprintf(stderr,"Error reading an integer from stdin.\n");
- exit(1);
- }
- system("pause");
- return 0;
- }
- #elif defined SECOND_DEMO
- FILE *stream;
- int main(void)
- {
- long l;
- float fp;
- char s[81];
- char c;
- stream=fopen("fscanf.out","w+");
- if (stream == NULL)
- {
- printf("The file fscanf.out was not opened.\n");
- }
- else
- {
- fprintf(stream,"%s %ld %f%c","a-string",65000,3.14159,'x');
-
- fseek(stream,0L,SEEK_SET);
-
- fscanf(stream,"%s",s);
- fscanf(stream,"%ld",&l);
- fscanf(stream,"%f",&fp);
- fscanf(stream,"%c",&c);
-
- printf("%s\n",s);
- printf("%ld\n",l);
- printf("%f\n",fp);
- printf("c=%c\n",c);
- fclose(stream);
- }
- system("pause");
- return 0;
- }
-
- #endif