这里我想通过指向一个数组来保存输入字符串,但输出将全部更改为最后插入的输入。
string userId = "";
var user = graphserviceClient.Users[userId].Request().GetAsync().Result;
我知道如何解决它?
答案 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)