【问题标题】:Seg fault while checking argv for an ampersand检查 argv 中的 & 符号时出现 Seg 错误
【发布时间】:2014-11-23 11:23:54
【问题描述】:

我有一个函数可以检查 argv 末尾是否包含 & 符号(shell 用途),它似乎没有理由给出一个段错误。提前感谢

length(char **argv) 计算 argv 的长度。

int ampersandCheck(char **argv){
    int n = length(argv);
    int i = 0;
    while(argv[n][i] != '\0'){
        if(argv[n][i] == '&' && argv[n][i+1] == '\0') return 1;
        i++;
    }

    return 0;
}

【问题讨论】:

  • 为什么你需要length 来计算传递给你的argc?你如何“计算”argv 的长度?..

标签: c segmentation-fault character argv


【解决方案1】:

这是因为您正在访问argv[n][i] 中的职位n。该职位不存在。您可以访问的最后一个职位是n - 1

【讨论】:

  • 确实,但如果“长度”的 OP 真的意味着“与argc 相同”,那么argv[n] 确实存在 存在(它只是NULL )。
猜你喜欢
  • 1970-01-01
  • 2021-05-28
  • 2020-02-26
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多