我想按字母顺序排序argv的元素。如何排列C中argv的元素?
下面的代码行给我的问题:
qsort(argv[optind], argc - optind, sizeof(argv[optind]), sort);
具体而言,最后一个参数是给我麻烦,比较功能,这是如下:
int
sort(const void *a, const void * b)
{
return(strcmp((char*)a, (char*)b));
}
目前,它编译得很好,但是当我运行它时,我最终得到了分段错误。
的运行示例如果我没有记错,修改不确定的行为'argv'阵列结果。你可能会提及谁给了你这个家庭作业,如果你能找到标准中的引文(甚至可以作为读者的练习),甚至可以获得额外的功劳。 – 2010-09-14 12:58:26
是的,好像某些平台可以从使用有趣的技巧中受益,所以未定义的行为似乎是合理的。另一方面,手册页示例与数组一起玩的事实可能表明了其他情况。或者我们发现自己在手册页中有一个错误。 :-) – clacke 2010-09-14 13:43:58
实际上,这个赋值不是为了对argv数组进行排序。基本上,整个程序应计算指定文件的字符数,字数和行数,并按字母顺序打印出结果。我的程序目前正确计数一切,但我需要找到一种方法使它按字母顺序打印出来,所以我认为排序argv数组将是一个好主意,因为那里的所有文件名都是这样。 无论如何,经过你们建议的一些调整之后,我可以将它打印到第一个文件和它的计数的位置,但是...继续低于 – DemonicImpact 2010-09-14 18:00:09