我正在尝试编写两个传递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);
}
}
我在函数中遇到错误。如何让程序变得更好?
最佳答案
pf=fopen(s,"r");
在此pf
代表FILE *
或打开文件的句柄。您可以直接在函数中传递它。检查 fopen 的手册页
您可以直接对文件句柄执行诸如 fgetc
或 getc
之类的操作。
除此之外,您的代码需要通过在不同位置适本地调用 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)
}
您可以从 main 中调用此函数,如下所示:
pf=fopen(s,"r");
minusculas(pf)
fclose(pf)
关于c++ - 如何使该函数与 FILE 一起使用? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54287569/