[英]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.