【问题标题】:Uppercase letters first in exec sortexec排序中的大写字母优先
【发布时间】:2017-05-09 15:17:16
【问题描述】:

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

【问题讨论】:

  • 需要将LC_COLLATE环境变量设置为"C"
  • 感谢您的快速回复!我在我的 main() 函数中写吗?可以举个例子吗?
  • 阅读putenv()函数的文档。
  • 与其使用putenv(),不如查看setenv(),之后可能需要使用unsetenv() 来撤消更改。并使用getenv() 当然检查LC_COLLATE 是否已经设置。你也可以考虑execve()execvpe()(如果你有后者)。

标签: c pipe exec


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多