我正在做一个练习,我必须将文件传递到管道中,使用exec sort对文件进行排序并打印出来。 我的问题是结果并不完全符合我的要求。 我的Infile数据是这样的。
abcdefg
123456
XXXXXX
01010101
当我拨打execlp("sort", "sort",(char *)0);
并阅读管道时,我将其作为输出:
01010101
123456
abcdefg
XXXXXX
我实际上希望打印出来:
01010101
123456
XXXXXX
abcdefg
我必须以某种方式告诉Sort
我希望首先显示大写字符。哪个是execlp("sort", "sort",(char *)0);
的正确陈述?
答案 0 :(得分:0)
您需要将LC_COLLATE
环境变量设置为"C"
。
阅读putenv()
函数的文档。
–巴尔马
您应该查看putenv()
,而不是使用setenv()
,之后可能需要使用unsetenv()
来撤消更改。然后当然使用getenv()
来检查是否已经设置LC_COLLATE
。您也可以考虑使用execve()
或execvpe()
(如果有后者)。
–乔纳森·莱夫勒