gpt4 book ai didi

c - 无法执行C代码

转载 作者:行者123 更新时间:2023-11-30 21:20:47 24 4
gpt4 key购买 nike

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);
}

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

“打开(空)文件时出错”

谁能帮帮我

最佳答案

如果您收到错误:

Error in opening (null) file

那么通常是因为您提供了一个指向 fopen() 的 NULL 指针,但由于这在技术上是未定义的行为,所以对于实际情况如何,所有的赌注都将被取消。发生。

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

换句话说,您正在执行 myprog 而不是 myprog myfile,这意味着第一个参数将为 NULL (根据需要按标准)。

无论如何,您应该进行防御性编程来捕获该特定问题,例如:

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)

我非常确定(除非您使用线程),如果第一次为 NULL,那么第二次也将是 NULL :- )

关于c - 无法执行C代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34487721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com