【发布时间】:2018-11-09 16:25:03
【问题描述】:
我想将第一个命令行参数分成两个不同的数字。以这种方式运行程序时出现分段错误错误:
gcc -ansi main.c -o main
./main 6000V7000
这里是源代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char *token;
char arr[200];
strcpy(arr, argv[1]);
token = strtok(arr, "v,V");
int firstNumber = atoi(token);
token = strtok(NULL, "v,V");
int secondNumber = atoi(token);
return 0;
}
我该如何解决这个问题?
【问题讨论】:
-
问题是什么?
-
我没有收到分段错误错误。
-
这段代码运行良好,应该如此。如果它不适合你,那么你的问题中没有包含足够的细节。
-
您确定这是产生错误的相同代码,还是您“简化”了它并在过程中删除了错误?如果输入 不 包含分隔符,它将失败。在尝试
atoi()之前,您应该测试strtok是否返回NULL。在 GDB 中运行它——它会准确地告诉你故障发生在哪一行以及所涉及的任何函数调用的参数——你可以检查任何其他变量。 -
使用
gcc -Wall -Wextra -g编译。并阅读how to debug small programs
标签: c split command-line-arguments