从MPI c中的命令行参数读取字符串

时间:2013-04-22 07:57:12

标签: c command mpi command-line-arguments

我必须写一个MPI c程序。虽然我添加了string.h,但我的编译器无法识别数据类型字符串。我想从命令行读取一个字符串并将其传递给下面给出的函数

int find_rows(char * file)
{
    int  length=0;
    char buf[BUFSIZ];
    FILE *fp;
    fp=fopen(file, "r");
    while ( !feof(fp))
    {
         // null buffer, read a line
        buf[0] = 0;
        fgets(buf, BUFSIZ, fp);
        // if it's a blank line, ignore
        if(strlen(buf) > 1) 
        {
            ++length;
        }

    }
    fclose(fp); 
#ifdef DEBUG
    printf("lFileLen = %d\n", length);
#endif
return    length;     

}

此功能在我有

时有效
 char file[50] = "m5-B.ij";

然后致电

nvtxs = find_rows(&file );

但是当我给出

时,给我分段错误
 nvtxs = find_rows(argv[1] );

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

而不是

find_rows(&file );

呼叫

find_rows(file );

file已经是一个指针。您正在将指针的地址传递给函数。

然后在函数find_rows中尝试打开无效文件并使用fp进行操作,这是一个空指针,导致未定义的行为

修改

您的通话nvtxs = find_rows(argv[1] );是正确的。问题是fp=fopen(file, "r");可能无法打开文件,如果该文件不存在或无法找到该文件。