我的班级编写基本C Shell的作业。我找到了很多页面来解释它的一部分和一些完全实现的代码。我不会复制,我现在只是使用它作为一种开始的方式。
所以我显然是在这个项目的开始。我正在查看一个example解析用户的输入并在char *argv[3];
我只是误解了这一点,或者如果有超过3个参数,这技术会破坏吗? (比如/a.out arg1 arg2 arg3
等)。我想以某种方式购买这个吗?
我知道a.out被认为是argv[0]
,而参数argv[1]
- 无论多少都被认为是{{1}}。对于一个程序有太多的参数可能是不好的做法,但我仍然至少想要解决它,因为我不知道我的TA将用于测试我的shell。
答案 0 :(得分:0)
这通常是您使用argc
的内容;检查传递给程序的参数数量是否超出了您的预期。
int main(int argc, char** argv) {
if (argc > 4) { // arbitrary number used here
fprintf(stderr, "Too many arguments!");
exit(1);
}
}
答案 1 :(得分:0)
它可能会或可能不会中断,但它是错误的。如果存在> 3个参数,那么你将写入超过3的保留数组长度。一些参数将在内存中,操作系统认为是未分配的,并且可能在那里分配其他对象。
应该检查parse()以查看是否存在3个以上的参数,如果是,则停止使用错误消息进行解析。