c - 段错误(核心已转储)

标签 c linux segmentation-fault

我在“操作系统”课上有一个作业。我的其余代码一切都很好,我用“gcc -o test test.c -Werror -Wall -pedantic -Wextra -Wfatal-errors 编译它 “,没有错误或任何错误。但是当我运行它时,我遇到了段错误(核心已转储)。 我在程序的不同阶段放置了一些 printf 以查看在哪一点出现错误(插入 !!问题发生在这里)。 我没有选择这个。感谢您的帮助!

部分程序:

void inputToken(char *cmdInput)
{
int i;
int quit = 0;
char *token;
char *argList[] = {"\0", "\0", "\0", "\0", "\0", "\0", "\0"};
char *argv[] = {"&", "%"};

token = strtok(cmdInput, " ");
i = 0;

while(token != NULL && i<7)
{
argList[i] = token;
token = strtok(NULL, " ");
i++; 
}

for(i=7; i>0; i++)
{
if(strcmp(argList[i], argv[0]) == 1) !!PROBLEM OCCURS HERE
    {
    <<SOME CODE>>
         }
 }
}


/*READING USER COMMAND*/
void usrInput()
{
int c;
int i=0;
char cmd[101];

while((c = getchar()) != EOF)
{
 if(c == '\n')
   break;
else if(i<100){
 cmd[i]=c;
 i++;
     }
  }

提前致谢!

最佳答案

C 中的数组是从 0 开始索引的。如果 i7,则 argList[i] 超出范围,这是第一次迭代时发生的情况:

for(i=7; i>0; i++)
{
  if(strcmp(argList[i], argv[0]) == 1) !!PROBLEM OCCURS HERE
    {
    <<SOME CODE>>
         }
  }
}

关于c - 段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20018734/

相关文章:

mysql - 无法从C程序连接到mysql套接字

c - 在 C 中使用 xmlReadFile 时出现警告/错误

c - 将 IOCP 与多个监听器一起使用

php - 是否有可能在长时间运行的 PHP 进程中捕获/处理/检测系统时间何时更改?

linux - 如何确定自上次 X11 屏幕刷新以来的时间长度?

使用外部变量的 C/CUDA 实现会产生链接器错误(无法解析的外部符号)

Linux/Unix 替换字符串中的模式并使用 sed 保存到新文件

在C中复制结构体的指针

c++ - 将地址分配给指向指针的指针会产生段错误

c - 使用 readdir() 的段错误