私は C が初めてで、このポインターとメモリ割り当てのすべてを完全には理解していません。概念的に間違っていたら申し訳ありません。文字列の配列内の文字列要素にアクセスしようとしていますが、文字列の配列は構造体にあり、それにアクセスしようとするたびにプログラムがクラッシュします。
この if ステートメント チェックを実行しようとすると、エラーが発生します
if (strcmp(functionList[holder].otherServers[i], "") == 0)
構造体の配列(functionList [holder])の現在の構造要素に、文字列の配列(otherServers [i])の要素に空の値が入力されているかどうかを確認したいだけです。そして、最初の空の要素が見つかったら、文字列の配列 (otherServers[i]) のそのインデックスに文字列をコピーするだけです。
そして、これが私のコードです(注:質問とは無関係だと思った多くのコードを取り出しました)
struct function {
char name[20];
int parameterNumer;
int canDo;
//currently the system has a 10 server max. You can change this easily
char *otherServers[10];
};
//global scope variables
//currently the system has a 10 server max. You can change this easily
char *serverList[10];
struct function functionList[10] = {{"",0, 0, {}}};
int numberofOtherServers;
while(strcmp(functionList[i].name, "") != 0 && i != -1)
{
//if the function exist in the functionList already, then just add server to the functions list of capable servers
if(strcmp(functionList[i].name, functionName) == 0 && functionList[i].parameterNumer == functionParam)
{
holder = i;
//function found so go through the functions list of servers and add it to the list
i = 0;
while(i >= 0)
{
if(strcmp(functionList[holder].otherServers[i], "") == 0)
{
strcpy(functionList[holder].otherServers[i], serverHelloName);
i = -1; //
}
if(i == 9)
{ //ran through entire list of all possible servers and couldnt find an empty slot
printf("server list full, should allow more room for other servers");
fflush(stdout);
i = -1;
}
}
printf("yay");
fflush(stdout);
}
if(i == 9)
{ //ran through entire list of all possible functions and did not see an empty slot or there is no match
printf("function list full so could not add, and there was no match for any functions");
fflush(stdout);
i = -1;
}
i++;
}