Lansional 2022-11-06 16:25 采纳率: 90.4%
浏览 52
已结题

什么地方出了问题,我看不出来。我用指针数组存入字符串,然后调换,但是调试的时候报错

问题遇到的现象和发生背景

什么地方出了问题,我看不出来
题目是:在主函数中输入10个等长的字符串。用另一函数对他们排序。然后在主函数输出

我用指针数组存入字符串,然后调换,但是调试的时候报错


###### 用代码块功能插入代码,请勿粘贴截图 

```#include<stdio.h>
#include<string.h>
#define N 10

int main()
{
    void sort(char* p1[]);
    char* p[N] = { 0 };
    int i;
    printf("enter 10 strings of equal length:\n");
    for (i = 0; i < N; i++)
    {
        scanf("%s", p[i]);
    }
    printf("after sort:\n");
    sort(p);
    for (i = 0; i < N; i++)
    {
        printf("%s", p[i]);
        printf("\n");
    }
    return 0;
}
void sort(char* p1[])
{
    int i, j;
    char* pt;
    for (i = 0; i < N - 1; i++)
    {
        for (j = i + 1; j < N; j++)
        {
            if (strcmp(p1[i], p1[j]) > 0)
            {
                pt = p1[i];
                p1[i] = p1[j];
                p1[j] = pt;
            }
        }
    }
}

运行结果及报错内容

运行结果被中止
报错只有一个:
警告 返回值被忽略: “scanf”。

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-11-06 20:32
    关注

    虽然定义了10个元素的指针数组,数组的每个元素就是指针,它没指向任何地方,输入字符串时当然会出错了,在第16行前插入一行,给指针数组每个元素分配一块空间即可,修改如下,供参考:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define N 10
    
    int main()
    {
        void sort(char* p1[]);
        char* p[N] = { 0 };
        int i;
        printf("enter 10 strings of equal length:\n");
        for (i = 0; i < N; i++)
        {
            p[i] = (char*)malloc(sizeof(char)*16);//修改
            scanf("%s", p[i]);
        }
        printf("after sort:\n");
        sort(p);
        for (i = 0; i < N; i++)
        {
            printf("%s", p[i]);
            printf("\n");
        }
        return 0;
    }
    void sort(char* p1[])
    {
        int i, j;
        char* pt;
        for (i = 0; i < N - 1; i++)
        {
            for (j = i + 1; j < N; j++)
            {
                if (strcmp(p1[i], p1[j]) > 0)
                {
                    pt = p1[i];
                    p1[i] = p1[j];
                    p1[j] = pt;
                }
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月15日
  • 已采纳回答 11月7日
  • 创建了问题 11月6日

悬赏问题

  • ¥15 我下载图形界面重启完就变成这样了,打字也打不了,动也动不了,该怎么解决(操作系统-centos)
  • ¥15 VBA中在窗体中遍历所有checkbox控件,提取出被选中的checkbox的caption值
  • ¥15 在Ubuntu上有什么命令,或者是系统文件能告诉我链接nvme ssd的pcie槽位是不是支持热插拔功能?
  • ¥15 ansys license许可证问题
  • ¥20 QQ号和密码都能正常登录微信 QQ号和密码登录微信显示密码错误
  • ¥15 qiankun主应用注册子应用提示跨域
  • ¥15 单片机RTOS Kernel与应用分离开发,Kernel如何调起应用?
  • ¥15 快手小店商家版APP怎么第三方APP跳转到指定用户聊天界面
  • ¥15 为什么AVL fire软件仿真时的步长改变了,仿真结果也会改变
  • ¥100 如何帮我写一个java小游戏