user-0 提问: 这个程序运行时总是停止工作，搞不清为什么

回复:
user: user-0
content: 给一个字符串，请将其中的英文字母的大小写进行转换。 输入 第一行是一个整数N，表示样例的个数，以后每行一个字符串。字符串可能由英文字母，数字，各种标点（包括空格）组成，长度不超过200。 输出 每行输出一个转换后的结果。

user: user-0
content: 我也是，我试试运行

user: user-1
content: 33 #include <stdio.h>     32 #include<string.h>     31 #include<malloc.h>     30 int main()             29 {                      28     int n, l, t=0, i=0;    27     char s[200];       26     scanf("%d",&n);    25     char *ptd[100];    //here you should use char for the follow using    24                        23     while(i < n && i < 100)    //the value could not cross the value of 100    22     {                  21     |   scanf("%s",s);  //gets(s);    20     |   l = strlen(s);    19     |   for(t = 0; t < l; t++)    18     |   {              17     |   |   if('A' <= s[t] && s[t] <= 'Z')    //include capital 'Z'    16     |   |   |   s[t] = s[t]+32;    15     |   |   else if('a' <= s[t] && s[t] <= 'z')    //include lowercase letter 'z'    14     |   |   |   s[t] = s[t]-32;    13     |   }           >> 12     |   ptd[i] = malloc(sizeof(128));     11     |   if (NULL == ptd[i]) {    10     |   |   fprintf(stderr, "malloc error!\n");     9     |   |   return -1;     8     |   }               7     |   //ptd[i] = s;    //pointer the first address of the string called s     6     |   memcpy(ptd[i], s, l+1);     5     |   i++;            4     }                   3     for(t = 0; t < n; t++)     2     |   printf("%s\n", ptd[t]);    //here use the address because the format %s     1     return 0;         34  }                                                                                                                                                                                                         ~

user: user-0
content: 谢谢，好久没上，抱歉啊！

user: user-2
content: 由于本人也是菜鸟，不太清楚楼主这段程序的实现功能。所以将楼主的程序作了点修改，仅供楼主参考：  #include <stdio.h> #include <string.h> #include <malloc.h> int main() {     int n,l,t=0,i=0;     char s[200];     char* ptd[100];     scanf("%d",&n);      for (t=0; t<100; t++)         ptd[i] = (char *)malloc(100 * sizeof(char));     while(i<n)     {         scanf("%s",s);         l = strlen(s);         for(t=0;t<l;t++)         {             if('A'<=s[t]&&s[t]<'Z')             s[t] = s[t]+32;             else if('a'<=s[t]&&s[t]<'z')             s[t] = s[t]-32;         }         ptd[i]=s;         printf("ptd[%d] = [%s]\n",i,ptd[i]);         i++;         memset(s, 0x00, sizeof(s));     }     for (t=0; t<100; t++)         free(ptd[i]);     return 0; }

user: user-3
content: 楼上正解你使用了一个 指针数组，然后给指针进行了赋值，类型是从char转换成int* 这里都三符合语法的，但是你*ptd[t]这里对一个非法地址进行*操作，是不可以的

user: user-4
content: #include <stdio.h>  #include<string.h>  #include<malloc.h>  int main()  {      int n,l,t=0,i=0;      char s[200];      scanf("%d",&n);      int* ptd[100];//这是个指针数组，你没给出具体的空间，就是说没初始化，可以写 int ptd[100][200];      while(i<n)      {          scanf("%s",s);  //gets(s);          l = strlen(s);          for(t=0;t<l;t++)          {              if('A'<=s[t]&&s[t]<'Z')              s[t] = s[t]+32;              else if('a'<=s[t]&&s[t]<'z')              s[t] = s[t]-32;          }          ptd[i]="s";//这里你他们赋值了。          i++;      }      for(t=0;t<n;t++)      printf("%s",*ptd[t]);      return 0;  }