首页 > 解决方案 > 结构中的字符字符串数组,值不会根据主要(在C中)改变?

问题描述

所以我正在用 C 语言编写一种命令行解释器,我觉得这里要做的事情太多了,无法将所有代码粘贴到这里。

但基本上我有一个为一个“命令行”存储数据的结构。它有一些整数,一些字符数组,还有一个字符指针数组(稍后用作 execvp 的参数)。

在 main 中,我调用一个 parse() 函数来读取一行,并更改该行的结构。它使用我编写的一个名为 getword() 的单独函数,该函数接受一个 char* 并用输入中的一个单词填充它。如果我在 parse() 中更改一个 int 或 char 数组,它会反映在 main.xml 中。问题是当我尝试将字符串存储到我的 args 数组中时,我认为它指向一个 main 不理解的元素(存储)。

如果我只是将存储换成“hello world”之类的东西,这将非常有效。有没有一种简单的方法来确保 main 可以读取这个值?

这是一个摘要版本:

char storage[MAXCHARS];

struct cmd{
   char *args[MAXITEM];
   char lastWord[MAXCHARS];

   int numArgs; //there are more but not necessary
};

struct cmd cmds[10];

void parse(){
   getword(storage);
   cmds[0].args[0] = storage;
   printf("%s\n",cmds[0].args[0]); //prints correctly
}

int main(){
    parse();
    printf("%s\n",cmds[0].args[0]); //prints null
}

我很乐意详细说明任何事情,我只是觉得如果我把所有东西都扔在这里就太过分了。

标签: carraysstringpointersstruct

解决方案


推荐阅读