[英]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 ++更好。
编辑:而不是手动调用malloc
和strcpy
还有手册页中的strdup
:
strdup()函数返回一个指向新字符串的指针,该字符串与s字符串重复。 新字符串的内存是通过malloc(3)获得的,可以通过free(3)释放。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.