我试图在传递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);
}
}
我在函数中出错。我怎样才能使程序更好?
答案 0 :(得分:1)
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)
}
您可以从主菜单中调用此函数,如下所示:
pf=fopen(s,"r");
minusculas(pf)
fclose(pf)