C fprintf未写入文件
出于某种原因,我的fprintf语句没有任何作用。我把printf语句放在它的周围,看看它是否达到了目的(它确实做到了),但我仍然不明白为什么什么都没有发生。 这是我的密码: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
#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,关闭并投票,因为总调试失败。