从C程序生成命令行应用程序
如何将此程序(binary.c)转换为命令行应用程序,以便它可以读取任何二进制文本(例如,从C程序生成命令行应用程序,c,C,如何将此程序(binary.c)转换为命令行应用程序,以便它可以读取任何二进制文本(例如,binary1.txt)文件,然后将其转换为ASCII?例如,我想做: ./binary < binary1.txt /binary
binary1.txt
)文件,然后将其转换为ASCII?例如,我想做:
./binary < binary1.txt
/binary
它应该打印出来
你好,世界
在命令行
这是我的节目:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *f_ptr;
f_ptr = fopen("binary1.txt", "r");
if (f_ptr == NULL){
printf("Error opening binary1.txt");
return 1;
}
while(1){
int ch = fgetc(f_ptr);
if(ch == EOF)
break;
printf("%c",ch);
}
fclose(f_ptr);
return 0;
}
#包括
#包括
int main()
{
文件*f_ptr;
f_ptr=fopen(“binary1.txt”,“r”);
如果(f_ptr==NULL){
printf(“打开binary1.txt时出错”);
返回1;
}
而(1){
int ch=fgetc(f_ptr);
如果(ch==EOF)
打破
printf(“%c”,ch);
}
fclose(f_ptr);
返回0;
}
我不知道你在问什么。我想您需要使用编译器编译源代码。如果您使用Linux,您可以执行以下操作:gcc binary.c-o binary
获取可执行文件…据我所知,您正在尝试将文件名传递给您的程序,但不确定如何执行该操作。在这种情况下,你可能想这样做
int main(int argc, char* argv[])
{
if(argc>1)
std::string filename = argv[1];
//now you have the file in the filename
// your code
return 0;
}
所以当你执行的时候就这么做
./binary binary1.txt
您不需要使用\include
int main(int argc,char*argv[]){
文件*fp;
如果(argc<2)/./binary out Show示例ofbinary1.txt
。你是在问如何从源代码构建可执行文件吗?你知道如果你想让程序从重定向文件而不是预先命名的文件获取输入,只需使用stdin/stdout,而不是按名称打开文件。10010001100101110110011011011110100001010111100110110011001000100001这是binary.txt文件问题是关于C的。这不是C。而且if(argc)
应该是if(argc>1)
…而char argv[]
应该是char*argv[]
。-叹气-为什么接受这个?
#include <stdio.h>
int main(int argc, char *argv[]){
FILE *fp;
if(argc < 2)//./binary < binary1.txt
fp = stdin;
else {//./binary binary1.txt
if((fp=fopen(argv[1], "r")) == NULL){
perror("fopen");
return 1;
}
}
int ch, count = 0;
unsigned char out = 0;
while((ch = fgetc(fp))!=EOF){
if(ch == '1' || ch == '0'){
out <<= 1;
out += ch - '0';
if(++count == 7){//7bit code
printf("%c", out);
count = out = 0;
}
}
}
puts("");
fclose(fp);
return 0;
}