fscanf(fp, %s ,str)!=EOF啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fscanf(fp, %s ,str)!=EOF啥意思相关的知识,希望对你有一定的参考价值。
怎么用??
fscanf返回的是实际读取的数据个数,出错或者到结尾时才返回EOF。EOF的值是-1,文本文件是以ASCII码的形式存储,ASCII码0-127,扩展ASCII为0-255,都没有-1,所以可以用EOF来判断文本文件读到最后了。
fscanf(fp,
%s
,str)!=EOF这句的意思就是用fscanf读fp指向的文件,要读的内容是一个字符串%s,把字符串读到str指向的空间里,如果读成功,fscanf返回成功读取的字符的个数,如果失败,返回EOF。 参考技术A fscanf
函数返回值等于
成功读入的参数个数。
fscanf(fp1,"%s",str[n])
只有一个参数,所以
读成功
将
返回
1。
if
(
fscanf(fp1,"%s",str[n])
>
0
)
读成功了执行这个块
else
读失败了
执行这个块
; 参考技术B 中间的%s应该有引号吧。
意思是从fp指向的文件中读取一个字符串到变量str中。
fscanf和fprintf
fscanf和fprintf
1.函数原型:
- int fprintf(FILE *fp, const char *format[,argument, ...])
- int fscantf(FILE *fp, const char *format[,address, ...])
2.功能:按格式对问件进行I/O操作
3.返回值:
- 成功,返回I/O的个数,出错或文件尾,返回EOF。
- fprintf()返回值就是写入成功的字符的个数。
- fscanf()返回值是扫描到几个数据,这个字符串不管有多长,要扫描的每一种类型算一个数据,%s算一个,%d算一个。详见eg3.
4.例子:
fprintf(fp, "%d, %6.2f, i,t"); //将i和t按%d,%6.2f格式输出到fp文件
fscanf(fp, "%d,%f", &i,&t)/ //若文件中有3,4.5,则将3送入i,4.5送入t。
eg1:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include <stdlib.h> void main1() { //printf("hello"); //fprintf(stdout, "hello");//printf只是fprintf特例 char str[100] = { 0 }; //scanf("%s", str); fscanf(stdin, "a=%s", str);//从字符串中取出,键盘缓冲区,输入时,要输入“a=abc”,下面才会打印。 fprintf(stdout, "%s", str);//int string映射到一个字符串 显示器缓冲区 getchar(); getchar(); } //1 [email protected] xijaxi16ytja6t7ibcrj void main2() { char str[256] = { 0 }; { int i = 1; char email[100] = "[email protected]"; char password[100] = "xijaxi16ytja6t7ibcrj"; sprintf(str, "%d %s %s", i, email, password); fprintf(stdout, "\n%s", str); } { int j; char emailx[100] = { 0 }; char passmd5[100] = { 0 }; sscanf(str, "%d%s%s", &j, emailx, passmd5); fprintf(stdout, "\nj=%d eamilx=%s passmd5=%s ", j, emailx, passmd5); } system("pause"); }
eg2:
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> typedef struct info7k7k { char user[50]; char password[50]; }INOF,* PINOF; void main2x() { FILE *pfr = fopen("Z:\\I\\尹成清华终极版C语言视频源码文档20150131\\大数据相关数据\\7k7k2000万_2047\\2000-1\\7k7kOK.txt", "r"); FILE *pfw = fopen("Z:\\I\\尹成清华终极版C语言视频源码文档20150131\\大数据相关数据\\7k7k2000万_2047\\2000-1\\7k7kOKwithid.txt", "w"); int i = 0; while (!feof(pfr)) { i++; INOF info1; fscanf(pfr, "%s%s", info1.user, info1.password);//提取 fprintf(pfw, "%d %s %s\n", i, info1.user, info1.password);//组合 } fclose(pfr); fclose(pfw); system("pause"); } void main3x() { //int num = fprintf(stdout, "helloword%s","1234"); //printf("\n%d", num);//fprintf返回值就是写入成功字符的个数 FILE *pf = fopen("C:\\x.txt", "r"); int num = fprintf(pf, "helloword%s", "1234");//写入失败返回-1 printf("\n%d", num); system("pause"); } void main() { //char str[128] = { 0 }; //int numa; //int numb; //int num = fscanf(stdin, "%s%d%d",str,&numa,&numb); ////返回值是扫描到几个数据,失败返回-1 //printf("\n%d", num); FILE *pf = fopen("C:\\x.txt", "w"); char str[128] = { 0 }; int numa; int numb; int num = fscanf(pf, "%s%d%d",str,&numa,&numb); printf("\n%d", num); system("pause"); }
eg3:
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> typedef struct info7k7k { char user[50]; char password[50]; }INOF,* PINOF; void main2x() { FILE *pfr = fopen("Z:\\I\\尹成清华终极版C语言视频源码文档20150131\\大数据相关数据\\7k7k2000万_2047\\2000-1\\7k7kOK.txt", "r"); FILE *pfw = fopen("Z:\\I\\尹成清华终极版C语言视频源码文档20150131\\大数据相关数据\\7k7k2000万_2047\\2000-1\\7k7kOKwithid.txt", "w"); int i = 0; while (!feof(pfr)) { i++; INOF info1; fscanf(pfr, "%s%s", info1.user, info1.password);//提取 fprintf(pfw, "%d %s %s\n", i, info1.user, info1.password);//组合 } fclose(pfr); fclose(pfw); system("pause"); } void main3x() { //int num = fprintf(stdout, "helloword%s","1234"); //printf("\n%d", num);//fprintf返回值就是写入成功字符的个数 FILE *pf = fopen("C:\\x.txt", "r"); int num = fprintf(pf, "helloword%s", "1234");//写入失败返回-1 printf("\n%d", num); system("pause"); } void main() { //char str[128] = { 0 }; //int numa; //int numb; //int num = fscanf(stdin, "%s%d%d",str,&numa,&numb); ////返回值是扫描到几个数据,失败返回-1 //printf("\n%d", num); FILE *pf = fopen("C:\\x.txt", "w"); char str[128] = { 0 }; int numa; int numb; int num = fscanf(pf, "%s%d%d",str,&numa,&numb); printf("\n%d", num); system("pause"); }
以上是关于fscanf(fp, %s ,str)!=EOF啥意思的主要内容,如果未能解决你的问题,请参考以下文章
在C/C++中,fscanf(fp,"%s",temp_str);和fscanf(fp,"%lf",&min_snr);的意思分别是啥?
在C/C++中,fscanf(fp,"%s",temp_str);和fscanf(fp,"%lf",&min_snr);的意思分别是啥?
C语言程序中有一条语句:fscanf(fp, "%*s %*s%*s");这里面的%*s表示啥?
fscanf(fp,"%[^\n]s",&a); %[^\n]s是啥意思呢?字符串?不包含换行的字符串???
fscanf(fp,"%*[^:]:%d%*[^:]:%s",&(p->student_id),p->name)//&是啥意思?