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);