如何使此功能与FILE一起使用? C ++

时间:2019-01-21 10:07:03

标签: c++ c

我试图在传递FILE*的地方编写两个函数,然后这些函数创建另一个FILE*,将原始数据分别以小写和大写字母隔开,而没有空格。

我想我明白了,但是我不知道如何将FILE*传递给函数。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;

void minusculas (FILE *urFile);
void mayusculas (FILE *urFile);

main(){
    char s[256];
    FILE *pf;
    cout << "Tell me the name of the FIlE: ";
    gets(s);
    pf=fopen(s,"r");
}

void minusculas (FILE *urFile){
    char c; FILE *pf;
    urFile=fopen(urFile,"r");
    pf=fopen ("alliva.txt","w+");
    while (c!=EOF){
        c=getc(pf);
        if (c!=EOF)
            c=tolower(c);
        fprintf(pf,"%c" ,c);
    }
}

void mayusculas (FILE *urFile){
    char c; FILE *pf;
    urFile=fopen(urFile,"r");
    pf=fopen ("alliva.txt","w+");
    while (c!=EOF){
        c=getc(pf);
        if (c!=EOF && isspace(c)==0)
            c=toupper(c);
        fprintf(pf,"%c" ,c);
    }
}

我在函数中出错。我怎样才能使程序更好?

1 个答案:

答案 0 :(得分:1)

pf=fopen(s,"r");

在此pf中代表FILE *或打开文件的句柄。您可以直接在函数中传递它。检查fopen

的手册页

您可以直接在文件句柄上执行诸如fgetcgetc之类的操作。

除此之外,您的代码还需要通过在各个位置适当调用fclose来处理文件的关闭。


要给您一个有关如何执行此操作的示例,请参见以下功能:

void minusculas (FILE *urFile){
    char c; FILE *pf;
    //urFile=fopen(urFile,"r"); This is not needed
    pf=fopen ("alliva.txt","w+");
    while (c!=EOF){
        c=getc(urFile); //If you want to read from urFile
        if (c!=EOF)
            c=tolower(c);
        fprintf(pf,"%c" ,c);
    }
    fclose(pf)
}

您可以从主菜单中调用此函数,如下所示:

pf=fopen(s,"r");
minusculas(pf)
fclose(pf)