【发布时间】:2021-03-21 16:57:44
【问题描述】:
我有以下代码。我希望使用命令行参数来访问程序或提供错误消息。尽管在 if(argc > 2) 我收到“分段错误(核心转储)”错误,但一切都给出了正确的错误消息。我在这里找不到错误。我做了一些研究,错误是当我访问我不应该访问的内存时。有人在下面的代码中看到是什么原因造成的吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]){
int a;
if(argc > 2){
printf("Please enter a command");
}
a = atoi(argv[1]);
if(a < 40 || a > 90){
printf("Price must be from 40 to 90 .\n");
}
if(a % 5 != 0){
printf("Price must be a multiple of 5.\n");
}
if(a > 40 || a < 90){
printf("Welcome!\n");
}
}
【问题讨论】:
-
你传递了什么参数?
argv[1]仅在argc是2或更多时有效。如果 (argc == 1` (你没有检查),那么它的访问越界了。 -
条件
a > 40 || a < 90将永远为真。
标签: c