十万火急 在linux 下怎么操作int main(int argc,char *argv[]) ????

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc,char *argv[])
{
int i,j,filelen;
char *buffer;
char temp;
FILE *fp;
if(argc!=2)
{
printf("error!\n");
exit(0);
}
if((fp=fopen(argv[1],"r"))==NULL)
{
printf("open %s error!",argv[1]);
exit(0);
}

fseek(fp,0L,SEEK_END);
filelen=ftell(fp);
buffer=(char*)malloc(sizeof(char)*filelen); //申请缓存区
fseek(fp,0L,SEEK_SET);
printf("文件大小为: %d字节\n",filelen);
fread(buffer,1,filelen,fp);//第二个参数表示每次读数据的大小
fclose(fp);
j=filelen-1;
for(i=0;i<j;i++,j--) //逆序函数
{
temp=buffer[i];
buffer[i]=buffer[j];
buffer[j]=temp;
}
if((fp=fopen(argv[1],"w"))==NULL)
{
printf("open %s error!",argv[1]);
exit(0);
}
fwrite(buffer,1,filelen,fp); //第二个参数为每次写数据的大小
fclose(fp);
return 0;
}
输入gcc -Wall -o cf cf.c 后怎么做????
cf.exe 1.txt?
gcc cf.exe 1.txt?
user/1.txt?
之后怎么做求解答????

    linux下是不看文件后缀名的,并且这里的可执行文件也不是.exe

    你用gcc -Wall -o cf cf.c这里cf就是生成的可执行文件名了

    运行时输入:./cf 1.txt 要保证有这个1.txt文件,因为你第一个是以r的方式打开

    argc 就是你命令行输入参数的个数,这里就是2个,一个是./cf 一个是1.txt

    argv[0]就是./cf,argv[1]就是1.txt以此类推

追问

运行起来还可以,就是最后1.txt 文件 要么无法打开,要么乱码。。
$ strace ./cf
$strace -c ./cf
$time ./cf
后,要不要在写个什么代码???

追答

必须乱码
因为你是用的fread/fwrite写的
写到文件中的都是二进制格式
你可以用cat 1.txt来查看一下
如果要写文本可以用fprintf()

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-09
gcc -Wall -o cf cf.c 之后会在当前目录生成文件名为cf的可执行文件,
这是一个统计文件size的程序,只需要在其后加上你想要统计size文件的路径即可:
输入./cf cf.c

[name@name-pc cur_dir]$ ./a.out 4.c
文件大小为: 938字节

就可以统计这个程序源文件的文件尺寸了

注:“./” 表示在当前路径下运行程序
相似回答