Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法超过C代码_C - Fatal编程技术网

无法超过C代码

无法超过C代码,c,C,大家好, 这是我的C代码的一部分。我无法理解如何执行此代码,因为它给出了如下所述的错误: 打开空文件时出错 请任何人帮我解决一下从错误的角度看,我认为argv[1]是空的或空的。请检查是否必须在命令行中指定文件名。如果出现错误: int main(int argc, char *argv[]) { FILE *fp, *fp1, *fp2; char line[200], temp[50], prev_het[5], curr_het[5], pdb_i

大家好, 这是我的C代码的一部分。我无法理解如何执行此代码,因为它给出了如下所述的错误:

打开空文件时出错


请任何人帮我解决一下

从错误的角度看,我认为argv[1]是空的或空的。请检查是否必须在命令行中指定文件名。

如果出现错误:

int  main(int argc, char *argv[])
    {
        FILE *fp, *fp1, *fp2;
        char line[200], temp[50], prev_het[5], curr_het[5], pdb_id[5], conneected_residues[10000], pres_name[4], pres_no[9], curr_temp[5], lig_atom[6], is_reesidue_present[10], curr_het_num[9], prev_het_num[9], chain_prot[2], chain_lig[2]];
        p_atom *front, *present;

        double het_x, het_y, het_z, dist;
        int flag, comma_indicator, no_of_het_atoms = 0, nmr_flag = 0, prot_ccount =0, connected_het = 0, connected_prot = 0, atom_flag = 0;

        front = present = NULL;
        prev_het[0] = curr_het[0] = '\0';
        fp = fopen(argv[1], "r");

        if(fp == NULL)if(fp == NULL)
        {
            printf("Error in opening %s file",argv[1]);
            exit (0);
        }
这通常是因为您提供了一个指向fopen的空指针,因为这在技术上是未定义的行为,所以对于实际发生的情况,所有的赌注都是无效的

由于fopen的参数是argv[1],这几乎可以肯定是因为您没有使用参数运行程序

换句话说,您正在执行myprog而不是myprog myfile,这意味着第一个参数将按照标准的要求为NULL

在任何情况下,您都应该进行防御性编程,以捕获特定问题,例如:

Error in opening (null) file

我非常确定,除非您使用的是线程,否则如果第一次为空,第二次也将为空:-

您如何运行程序?您必须在命令行参数中提供文件名才能运行此操作。您没有在命令行上传递任何参数。我是否没有正确运行它…我提供了./program\u name…我还应该添加什么LAXMI,根据我的回答,它还需要一个文件名,例如./program\u name myfile.txt。你可能应该阅读答案,而不是试图在评论部分把它弄清楚。
if (argc < 2) {
    fprintf (stderr, "Not enough parameters\n");
    return 1;
}

FILE *fp = fopen (argv[1]);
if (fp == NULL) {
    fprintf (stderr, "Cannot open file\n");
    return 1;
}
:
// Can probably assume it's okay now.
:
fclose (fp);
return 0;
if(fp == NULL)if(fp == NULL)