难以使用指针在C中输入字符串

时间:2014-03-05 18:40:31

标签: c

以下程序在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;
}

2 个答案:

答案 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更多的助记符名称。