【问题标题】:Unix cat -n command implementationUnix cat -n 命令实现
【发布时间】:2013-07-27 22:37:39
【问题描述】:

如何在我的程序实现中包含 cat -n 命令 这是我的程序的问题,我无法让它在每一行之后打印一个新的行号,所以关于我可以做些什么来纠正这个问题的任何建议

if(argv[1] == "-n")
{
    fd = open(argv[i],O_RDONLY);
    printf("%d\t",line);
    while(n = read(fd,&s,1) > 0)
    {
        if(s == '00')
        {
            line++;
            printf("\n%d\t",line);
        }   
        printf("%c",s);
    }
}   

【问题讨论】:

  • '00' 不是有效的字符文字。
  • @JoachimPileborg 这可能不是他打算使用的,但它是一个有效的字符文字。
  • 警告:多字符字符常量 [-Wmultichar] int s = '00';
  • @JoachimPileborg:这是一个有效的字符文字,具有实现定义的值,几乎完全没用。
  • argv[1] == "-n" 不是您在 C 中比较字符串的方式,请使用 strcmp,或者更好:getopt

标签: c unix command


【解决方案1】:
while (n = read(fd,&s,1) > 0)

缺少括号。 > 的优先级高于 =

if(s == '00')

这不是您检测行尾的方式。在类 unix 系统中,行尾通常是 '\n' 字符。

【讨论】:

  • 他为什么要'00'\n的ascii值还是什么??
  • @GrijeshChauhan 你应该问 OP 而不是我。我不知道他为什么使用'00'
  • @JamesMorris 我认为这里甚至不需要'0' 也有不止一个错误。
  • 感谢您的帮助
  • 是的,我错误地将 ascii 值设为 null
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
  • 2015-07-15
相关资源
最近更新 更多