C 通过指针对字符串进行冒泡排序

C 通过指针对字符串进行冒泡排序,c,C,我正在修改我的编程概念,遇到了这个通过指针排序字符串的程序 我收到以下错误: 数组下标不是整数。 这是我的密码: #include <stdio.h> #include <string.h> int main() { char buffer[100]; char *p[

我正在修改我的编程概念,遇到了这个通过指针排序字符串的程序

我收到以下错误: 数组下标不是整数。 这是我的密码:

                 #include <stdio.h>
                 #include <string.h> 
                 int main()
                {
                 char buffer[100];

                 char *p[10];
                 int n;

                 printf(" Input the number of strings");
                 scanf("%d \n",&n);

                 int i=0;
                 for(i=0;i<n;i++)
                 {
                 gets(buffer);
                 *p[i]=(char *)malloc(strlen[buffer]+1);
                  strcpy(*p[i],buffer);
                  }
                  char *temp;
                  for(i=0;i<n-1;i++)
                  {
                  if(strcmp(*p[i],*p[i+1])>0)
                  {
                  *temp=*p[i+1];
                  *p[i+1]=*p[i];
                  *p[i]=*temp;

                   }
         }
#包括
#包括
int main()
{
字符缓冲区[100];
char*p[10];
int n;
printf(“输入字符串数”);
scanf(“%d\n”,&n);
int i=0;
对于(i=0;i
应该是

 p[i]=malloc(strlen(buffer)+1);
                  strcpy(p[i],buffer);
甚至更短(使用POSIX.1中定义的函数):


请正确格式化您的代码。始终提供您所有的信息,并将您的问题简化为一个。错误在哪里?在哪里遇到的?
strlen
是一个函数,而不是一个数组。显然编写此代码的人从未实际测试过它。此外,请在请求帮助之前编译您的代码并启用所有警告并处理这些警告。这是p很可能,通过阅读使用
get()
的人编写的代码来学习C也是一个非常糟糕的主意转换是不必要的,而且是一个坏习惯,很容易导致对编译器隐藏错误。永远不要告诉它闭嘴。@PaulR ya我注意到了这一点,当时它已被编辑。无论如何,谢谢你,也许可以补充一下,
strdup()
是每个人都应该在工具箱中使用的标准非标准函数?
 p[i]=malloc(strlen(buffer)+1);
                  strcpy(p[i],buffer);
 p[i]=strdup(buffer);