c - 用于打开文件的参数



我想在执行文件时使用参数打开文件,例如:

./Project 123.txt

我可以在某种程度上完成这项工作,但是如果我尝试将参数传递到函数中,然后调用该函数,则有些工作不太正常。

这是我的函数,它将从文本文件中读取行:

int numeroLinhas(){
    int ch;
    FILE *fp;
    int linhas=0;
    fp = fopen("123.txt","r");
    while( ( ch = fgetc(fp) ) != EOF ){
        if(ch=='n'){
            linhas++;
        }
    }
    fclose(fp);
    fprintf(stats, "linhas: %dn", linhas);
}
int main(int argc, char *argv[]){
    FILE *fp;
    fp = fopen(argv[1],"r");
    numeroLinhas();
}

所以,我想知道如何将argv[]有一个参数传递到我的numeroLinhas()函数中,这样我就不必在编码过程中调用文件名,只需在执行时。

问题是您已对要打开的文件名进行了硬编码。修改函数以接受参数,即命名文件的字符串。

然后,只需将正确的argv条目作为参数传递给函数,首先检查程序的参数数量。

将文件名传递给计算文件中行数的函数:

#include <stdio.h>
void numeroLinhas(const char *filename)
{
    int ch;
    int linhas = 0;
    FILE *fp = fopen(filename, "r");
    if (fp == 0)
    {
        fprintf(stderr, "Failed to open file %s for readingn", filename);
        return;
    }
    while ((ch = fgetc(fp)) != EOF)
    {
        if (ch == 'n')
            linhas++;
    }
    fclose(fp);
    fprintf(stats, "linhas: %d no %sn", linhas, filename);
}
int main (int argc, char *argv[])
{
    for (int i = 1; i < argc; i++)
        numeroLinhas(argv[i]);
    return 0;
}

错误检查fopen()调用;它们失败。 正确处理fgetc()返回的int。 将函数更改为返回void,因为没有返回。 报告标准错误。 在输出中包含文件名(错误和例程)。 对提供的所有参数调用该函数。 如果没有提供参数,请不要说什么——或者在main()的循环之前添加if (argc < 2) { fprintf(stderr, "Usage: %s file [...]n", argv[0]); return 1; }

很抱歉英语/葡萄牙语混合消息。

int numeroLinhas(char *filename){
   char ch;
   FILE *fp;
   int linhas=0;
   fp = fopen(filename,"r");
   while( ( ch = fgetc(fp) ) != EOF ){
        if(ch=='n'){
        linhas++;
        }
   }
   fclose(fp);
   fprintf(stats, "linhas: %dn", linhas);
}
int main (int argc, char *argv[]){
   //should have an if for argc size
   char *filename = argv[1];
   numeroLinhas(filename);
}

相关内容

  • 没有找到相关文章

最新更新