我希望將n個單詞存儲到一個數組中。我在下面的代碼中使用了指針來做到這一點。但問題是,一旦讀取了所有單詞,這些單詞就無法打印。如何使用動態stirng陣列c
請提供任何解決方案。
#include <stdio.h>
#include <stdlib.h>
int main() {
char buff[10];
int i,T;
printf("Enter the no.of words:");
scanf("%d",&T);
char **word= malloc(10*T);
printf("Enter the words:\n");
for(i=0;i<T ;i++){
scanf("%s",buff);
word[i]= malloc(sizeof(char)*10);
word[i]=buff;
printf("u entered %s\n",word[i]);
if(i>0)
printf("u entered %s\n",word[i-1]);
}
printf("Entered words are:\n");
for(i=0;i<T ;i++)
printf("%s\n",word[i]);
}
問題是你正在爲每個數組元素存儲* same *'buff'指針。這顯然意味着它們都包含相同的值,並且隨着'malloc'緩衝區丟失而導致內存泄漏。使用'strcpy'或'strdup'。 – kaylum