我希望将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]);
}
答案 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
中存储的最新值。