我遇到了一些麻烦,因为我是 C 新手,甚至不确定我想做的事情是否可行。
我将一个名为args的数组传递给一个函数。在函数中,我还创建了一个名为arrayOfArgs的二维数组。我想要做的是将 args 中的某些值放入名为 arrayOfArgs 的二维数组中的特定位置。
到目前为止,这是我的代码:
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 的创建方式或两者上都做错了。
或者是否有可能像我正在尝试的那样从一维数组变为二维数组?
我很确定那里有一个 NULL 因为之前我调用了这个循环并且它有效:
for(i = 0; args[i] != NULL; i++) {
printf("Argument %d: %s\n", i, args[i]);
}
谢谢!