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)//&是啥意思?

fscanf和fprintf