学c菜鸟鸟 2022-11-14 15:40 采纳率: 75%
浏览 24

关于指针的问题,如何解决?

要求输入三个字符串,并且从小到大输出
#include <stdio.h>
#include <string.h>
int main()
{ void sort(char*str[],int n);
  void print(char*str[],int n);
  char* str[1000];
  int i, m=3;
  printf("请输入三个字符串:");
  for(i=0;i<m;i++)
  { scanf("%s",str[i]);
   } 
   sort(str,m);
   print(str,m);
   return 0;
}
void sort(char*str[],int n)
{ int i,k,j;
   char*temp;
   for(i=0;i<n-1;i++)
   {  k=i;
   for(j=i+1;j<n;j++)
   if(strcmp(str[k],str[j])>0) k=j;
   if(k!=i)
   { temp=str[i];
     str[i]=str[k];
     str[k]=temp;
   }
   
}
void print(char*str[],int n)
{ int i;
  for(i=0;i<n;i++)
    {printf("%s\n",str[i]);} 

}



  • 写回答

4条回答 默认 最新

  • 浪客 2022-11-14 15:52
    关注

    char *str[1000] 定义了1000个指针,而这些指针并没有被分配内存空间

    // char *str[1000];
        int i, m = 3;
        char **str = (char **)malloc(sizeof(char *) * m);
        for (i = 0; i < m; i++)
            str[i] = (char *)malloc(sizeof(char) * 100);
    
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月14日

悬赏问题

  • ¥15 在Starccm中相变材料的物理模型该如何选择?
  • ¥15 关于#android#的问题,请各位专家解答!
  • ¥200 PDF使用虚拟列表技术做渲染和加载带来的问题
  • ¥15 出现报错Debug Assertion Failed,如何解决?
  • ¥50 mcf中怎么实现导入的图片变成透明
  • ¥15 ruoyi-flowable流程设计配置的表单时,级联选择如何配置
  • ¥20 金属玻璃的剪切局部化程度怎么用ovito表示出来
  • ¥15 自定义控件在中文模式下不能输入数字
  • ¥15 关于#运维#的问题:用mail.abc.com 端口9696的方式同样能访问hr.abc.com 端口:6080 的页面两个网址都指向同一个外网ip(相关搜索:服务器)
  • ¥15 xgboost建模输出结果由三分类变成四分类