簡體   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