[问题] linux下执行c的命令参数问题

楼主: roger840410 (roger)   2019-10-16 09:30:44
初次本版发文有不妥的地方请指正
在linux下用gcc编译./执行
作业要求把txt档案的每行照字母排序后输出新的txt
基本上写完没问题
但我卡在两个地方
1.
命令行
./sort < old.txt > /tmp/new.txt
在sort.c中要怎么引用这个old.txt?
我本来想用fopen取得argv的导入文件名但失败
我写个循环把argv[]里面的东西印出来
但只有argv[0]是 ./sort 后面全是不相干的东西
把命令行的<>拿掉argv[1] argv[2]就正常=命令参数了(old.txt 和/tmp/new)
但作业要求不能动.sh档案也就是不能改命令
而且乱打测试发现./sort < old.txt > abcdefg
会生成一个abcdefg档案 内容是程式中printf结果(就不会显示在terminal里了)
请问命令行的文件名用尖括号刮起来有什么特别意义吗?
2.
用fopen生成单个 new.txt没问题但加上资料夹路径/tmp/new.txt就创不出来也不会报错
请问是出了什么问题或是有什么关键字可以找吗?
谢谢
作者: jerryh001   2019-10-16 09:33:00
不是<>而是<和>两件事 <file表示stdin改成从file来 >file表示stdout改成从file出去
作者: Bencrie   2019-10-16 09:37:00
直接存取 stdin & stdout,这两个 FILE 一开始就会先开好
作者: x246libra (楓)   2019-10-16 09:41:00
google "redirect 重导向 linux"
作者: Schottky (顺风相送)   2019-10-16 09:46:00
stdin & stdout 就当作键盘输入、萤幕输出即可
楼主: roger840410 (roger)   2019-10-16 09:50:00
真的非常感谢各位的指点 原来我一开始思考方向就错了... 感觉在学校的linux白学了(掩面)
作者: Schottky (顺风相送)   2019-10-16 12:07:00
你只是没玩过 UVa 而已 (拍拍)
作者: Bencrie   2019-10-17 01:44:00
呃 ... Windows 也是一样啊
作者: eye5002003 (下一夜)   2019-10-23 12:40:00
fopen可以建立档案但是不会建立资料夹,你可以先用boost::filesystem先把资料夹建好

Links booklink

Contact Us: admin [ a t ] ucptt.com