以下程序在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;
}
答案 0 :(得分:2)
T未初始化(请记住,在C ++中,本地范围变量不会自动初始化):
int T= 6;
答案 1 :(得分:1)
T
未在main()
内初始化,因此具有未定义的值。
char *strings[T]
创建一个未定义长度的char *
指针数组。
使用以下方法解决此问题:
int T=6;
或者,鉴于T
实际上是不变的:
const int T=6
或者更好
#define T 6
随意使用比T更多的助记符名称。