如何在c中使用动态搅拌阵列

时间:2017-04-24 03:41:29

标签: c arrays dynamic

我希望将n个单词存储到数组中。我在下面的代码中使用指针来做到这一点。但问题是,一旦读完所有单词,单词就无法打印。

请提供任何解决方案。

#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]);


}

1 个答案:

答案 0 :(得分:4)

您需要分配char * -

的大小
char **word= malloc(sizeof(char *)*T); 

要复制字符串,您需要使用strcpy。所以不是这个 -

word[i]=buff;          // 1

使用此 -

strcpy(word[i],buff);         // include string.h header

通过1.,您使用指针指向buff,但buff中存储的值会发生变化。因此,所有指针所指向的值都是相同的,并且您得到所有​​相同的输出,即buff中存储的最新值。