大写字母首先在exec排序

时间:2016-12-24 01:24:09

标签: c pipe exec

我正在做一个练习,我必须将文件传递到管道中,使用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);的正确陈述?

1 个答案:

答案 0 :(得分:0)

您需要将LC_COLLATE环境变量设置为"C"

阅读putenv()函数的文档。                     –巴尔马

您应该查看putenv(),而不是使用setenv(),之后可能需要使用unsetenv()来撤消更改。然后当然使用getenv()来检查是否已经设置LC_COLLATE。您也可以考虑使用execve()execvpe()(如果有后者)。                     –乔纳森·莱夫勒