私は関数を少し良くし、有用なものを書くことができ、再帰的であり、プログラムに与えられた番号のリストを並べ替えるようにしようとしています。しかし私はここでセグメンテーションフォルトを得ています。私がargv[i+1]
を読むときにこれが起こっていると感じるのは、私がargv[]
の項目を使い果たしたときです。しかし、私のif(i < argc){
ステートメントでこれをチェックしても、なぜこのことが起こらないのですか?セグメンテーションフォールトを与える基本ブール関数
ここに私のコードです。
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#include <string.h>
#include <stdbool.h>
bool compare(val1,val2)
{
if(val1 > val2){return false;}
else{return true;}
}
// int values[], int n
int main(int argc, char *argv[])
{
for(int i=1; i<argc; i++){
//print unsorted list
printf("%s\n",argv[i]);
if(i < argc){
if(compare(*argv[i],*argv[i+1]))
{
printf("true\n");
}
else
{
printf("false\n");
}
}
// Add else for odd numbered lists
}
return 0;
}
もし '私==のargc - 1 '、' ARGVは、[I + 1]は '未定義です。 –
あなたのフィードバックに感謝しました。 – Gates