C fprintf未写入文件

C fprintf未写入文件,c,file-io,C,File Io,出于某种原因,我的fprintf语句没有任何作用。我把printf语句放在它的周围,看看它是否达到了目的(它确实做到了),但我仍然不明白为什么什么都没有发生。 这是我的密码: #include <stdio.h> int main(int argc, char *argv[]) { char c[8]; FILE *fp; FILE *fp2; int i=0; int count,j,temp=0; fp = fopen(argv[0],"r"); f

出于某种原因,我的fprintf语句没有任何作用。我把printf语句放在它的周围,看看它是否达到了目的(它确实做到了),但我仍然不明白为什么什么都没有发生。 这是我的密码:

#include <stdio.h>
int main(int argc, char *argv[])
{
  char c[8];
  FILE *fp;
  FILE *fp2;
  int i=0;
  int count,j,temp=0;

  fp = fopen(argv[0],"r");
  fp2 = fopen(argv[1], "w");

  for(i=0; i<50;i++)
    {
        count = fread(c,1,8,fp);
        if(((4<i)&&(i<10))||((14<i)&&(i<20))||((24<i)&&(i<30))||((34<i)&&(i<40))||(44<i)){
        continue;
    }
    else{
        for(j = 0; j<count; j++){
            c[j]=c[j]-'0';
            c[j]=c[j] << (count - (j+1));
            temp = temp | c[j];
      }
        fprintf(fp2, "%d\n", temp);
    }
  }

  fclose(fp);
  fclose(fp2);
  return 0;
}
#包括
int main(int argc,char*argv[])
{
charc[8];
文件*fp;
文件*fp2;
int i=0;
整数计数,j,温度=0;
fp=fopen(argv[0],“r”);
fp2=fopen(argv[1],“w”);

因为(i=0;i你抓住了错误的论点

argv[0]
始终是正在运行的程序的名称。命令行选项传递给程序,以
argv[1]
开头

实际上,您正在读取可执行文件并写入输入文件

因此,与此相反:

fp = fopen(argv[0],"r");
fp2 = fopen(argv[1], "w");
你想要这个:

// check for the proper number of arguments first
if (argc < 3) {
    printf("usage: program file1 file2\n");
    exit(1);
}
fp = fopen(argv[1],"r");
fp2 = fopen(argv[2], "w");
//首先检查参数的正确数量
如果(argc<3){
printf(“用法:程序文件1文件2\n”);
出口(1);
}
fp=fopen(argv[1],“r”);
fp2=fopen(argv[2],“w”);

问题在于使用了
argv

./myprog infile outfile
名称
infle
将在
argv[1]
中,而不是在
argv[0]
中。对于
outfile
也一样,它将在
argv[2]
中:

fp = fopen(argv[1],"r");
fp2 = fopen(argv[2], "w");
为完整起见,本标准规定了
argv[0]
的内容如下:

如果
argc
的值大于零,则由
argv[0]
指向的字符串表示程序名;
argv[0][0]
如果程序名在主机环境中不可用,则应为空字符


如果要
fopen(argv[0],“r”);
,请将文件模式
“r”
更改为
“rb”
。检查
fopen
中的返回值。也许使用调试器进行调试也会有帮助。这不一定是问题所在,但缩进是错误的,这会使代码很难理解。你能解决这个问题吗?@MichaelBurr yup,关闭并投票,因为总调试失败。