c - 结构中的字符字符串数组,值不会根据主要(在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
}
我很乐意详细说明任何事情,我只是觉得如果我把所有东西都扔在这里就太过分了。
解决方案
推荐阅读
- python - 如何将部分代码包含到“产量”中?
- javascript - d3.js + GEOJSon 地图不显示
- angular - 带有身份验证令牌的 Angular bypassSecurityTrustResourceUrl
- node.js - 无法使用 npx 创建一个 Strapi 应用程序(尖锐模块问题,然后是 sqlite3 模块问题)
- html - CSS:样式表不反映更改
- flutter - 如何设置列表视图尾随填充
- java - Getdown 启动单实例 java GUI
- c# - 使用多个渠道,我做错了什么?
- html - json file missing Brackets
- ruby - Ruby 命令使用 AWS CLI 从 S3 下载多个文件夹