【发布时间】:2014-03-05 18:40:30
【问题描述】:
以下程序在 gcc 中工作,但在给出 T = 6 的值时,该程序继续运行并且不会在请求输入字符串时结束。如果你发现这个程序有什么问题,有什么帮助吗?
int main()
{ int T,i,j;
char *strings[T];
printf("Enter the Number of Strings to Reverse : \n");
scanf("%d ",&T);
for(i=0;i<T;i++)
{ strings[i] = (char *)malloc(100*sizeof(char));
scanf("%s\n",strings[i]);
}
for(i=0;i<T;i++)
{printf(" The String %d is : %s\n",i+1,strings[i]);
}
return 0;
}
【问题讨论】:
-
T在创建指针数组时未初始化strings -
@Andreas 知道了,但是数组长度为 0(T 会被初始化为 0),对吧?
-
@Andreas T 将在程序执行时由用户给出。
-
但是
strings已经被分配了。阅读stackoverflow.com/questions/14049777/… -
@JohnYost 局部变量不能指望被隐式初始化,所以不,T 不会(可靠地)初始化为 0。
标签: c