私はCに不慣れで、自分がやりたいことが可能かどうかさえわからないため、少し問題があります。
argsという配列を関数に渡しています。関数内で、 arrayOfArgsという2D配列も作成しています。私がやりたいのは、argsからの特定の値をarrayOfArgsと呼ばれる2D配列の特定の場所に配置することです。
これはこれまでの私のコードです:
int do_command(char **args){
//this is usually a changing variable depending on the situation, but I've hard coded it to make sense
int commands = 3;
char **arrayOfArgs[commands][10];
//counts which column in arrayOfArgs we are on
int commandNum = 0;
//Counts which part of a command we are on
int count = 0;
//Array Counters
int i = 0;
int j;
//Go through args until we reach the end
while (args[i] != NULL){
if(!strcmp(args[i], "|")){
arrayOfArgs[commandNum][count] = args[i];
count++;
}
else if (strcmp(args[i], "|")) {
count = 0;
commandNum++;
}
//Looking at the next value in args
i++;
}
arrayOfArgsに入れられるのはぎこちないだけなので、問題が発生しています。配列が指している方法、arrayOfArgsが作成された方法、またはその両方で何か問題が発生したと確信しています。
または、私が試しているように1Dから2Dアレイに移行することも可能ですか?
以前にこのループを呼び出して機能するので、そこにNULLがあると確信しています。
for(i = 0; args[i] != NULL; i++) {
printf("Argument %d: %s\n", i, args[i]);
}
ありがとう!