我有一个关于动态数组的作业,因此我试图了解它如何与简单的程序一起工作。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int cnt,i=0;
char temp[1001];
char *obj[5];
scanf("%d",cnt);
while(i<cnt){
scanf("%s",temp);
obj[i]=malloc(sizeof(char)*(strlen(temp)+1));
obj[i]=temp;
printf("%s\n",obj[i]);
printf("%d\n",i);
i++;
}
return 0;
}
当我通过从标准输入读取“cnt”等于 5 时,程序将永远运行,尽管结束条件满足。但是当我得到“cnt”等于5时,通过分配它,在程序的最开始(不是通过使用scanf)程序工作得很好。这可能是什么原因?