【发布时间】:2012-09-17 23:01:05
【问题描述】:
int main(int argc, char **argv){
// If the user does not have the right amount of arguments exit the program and display message
if(!(argc >= 2)){
printf("Usage: %s -l -c -w -L <filenames>");
exit(-1);
}
size_t iscFlag = 0;
size_t islFlag = 0;
size_t iswFlag = 0;
size_t isLFlag = 0;
FILE *src;
puts("Work work");
// For loop that checks for all the flags
int i;
for(i = 1; i < 5; i++){
if(strcmp(argv[i], "-c") == 0){
iscFlag = 1;
}else if(strcmp(argv[i], "-l") == 0){
islFlag = 1;
}else if(strcmp(argv[i], "-w") == 0){
iswFlag = 1;
}else if(strcmp(argv[i], "-L") == 0){
isLFlag = 1;
}
}
我正在尝试创建一个简单的 for 循环来检查标志以在 UNIX 类型的终端中重新创建 wc 命令。有人知道for循环是怎么回事吗?我得到一个分段错误。还有更多代码,但我只是发布其中的一部分。
提前致谢。
【问题讨论】:
-
哦,我是个白痴。我想我在发布后几秒钟就发现了问题所在。我只是在做 ./wc -w 文件名,所以循环正在检查越界。
-
不要忘记 printf 的参数:你使用没有参数的 %s。下一个可能的段错误
标签: c loops for-loop segmentation-fault fault