繁体   English   中英

从函数C修改字符串的全局数组

[英]Modifing global array of strings from function C

我在调试下面的代码时遇到问题,我想从processHIstory()函数中获取历史记录中的所有项目,但是却得到了不良结果

这是我要做的,假设用户输入了以下信息...

>> ls
>> pwd
>> clear

然后历史记录数组将是

histrory= {"ls","pwd","clear"}

当用户想要这样的历史记录时

 >>!!

我需要所有的历史来展示

ls 
pwd
clear

但我现在正在接受

 !!
 !!
 !!

我有什么问题?请帮帮我。

这是我的代码的git链接! 要旨

谢谢。

我怀疑您何时进行history[commandsExcuted]=argv[0]; 然后您去更改作为指针的argv[0]的值。

您需要做的是为字符串分配内存,并将其复制到历史记录中,也许像这样:

history[commandsExecuted] = malloc(strlen(argv[0]));
strcpy(history[commandsExecuted], argv[0]);

抱歉,如果不编译,已经有一段时间了,因为我使用过C / malloc / str *函数。 C ++更好。

编辑:而不是手动调用mallocstrcpy还有手册页中的strdup

strdup()函数返回一个指向新字符串的指针,该字符串与s字符串重复。 新字符串的内存是通过malloc(3)获得的,可以通过free(3)释放。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM