如何通过指向字符串数组来保存输入?

时间:2017-06-28 09:51:35

标签: c pointers

这里我想通过指向一个数组来保存输入字符串,但输出将全部更改为最后插入的输入。

string userId = "";
var user = graphserviceClient.Users[userId].Request().GetAsync().Result;

我知道如何解决它?

2 个答案:

答案 0 :(得分:2)

这两行存在问题:

month[i] = (char *)malloc(10*sizeof(char));
...
month[i] = name;

第一个分配内存并使month[i]指向该内存。第二行重新分配 month[i],使其指向name。您丢失了原始内存(并且有内存泄漏)。除了内存泄漏之外,它还意味着 month的所有元素将指向相同的内存,它将包含最后一个输入读取。

您可以copy字符串:

,而不是使用作业
strcpy(month[i], name);

或者跳过临时name变量并直接阅读month[i]

scanf("%9s", month[i]);

答案 1 :(得分:0)

改变这个:

month[i] = name;

到此:

strcpy(month[i], name);

因为您需要使用strcpy()来复制/分配C中的字符串。

BTW:Do I cast the result of malloc?没有。