充电中_678 2023-11-23 22:08 采纳率: 66.7%
浏览 10
已结题

字符串数组应该怎么传参

字符串数组应该怎么传参?

img

为什么我的代码中函数judge1,2,3中printf("%s",nums[i]);输出结果是乱码

  • 写回答

2条回答 默认 最新

  • 是Yu欸 新星创作者: python技术领域 2023-11-23 23:46
    关注

    在你的代码中,字符串数组 nums 是一个数组指针(char**),并且你为每个字符串分配了内存空间。然而,在代码中存在一些问题,可能导致输出乱码的情况。

    首先,你提到 printf("%s",nums[i]); 输出乱码。这可能是因为字符串没有正确以 null 结尾,或者字符串中包含了无法正确解释的字符。请确保你输入的字符串以 null 结尾,这是 C 语言中字符串的约定。

    另外,你在循环中使用 scanf("%s",nums[i]); 来读取字符串,这可能会导致缓冲区溢出问题。建议使用 fgets 函数来读取字符串,以确保不会溢出缓冲区。示例代码如下:

    for(i = 0; i < n; i++) {
        fgets(nums[i], 5, stdin); // 使用fgets来读取字符串
        score[i] = 0; // 初始化 score
    }
    

    上述代码使用 fgets 函数来读取字符串,第二个参数指定了字符串的最大长度(包括 null 结尾字符)。然后,你可以使用 printf 来输出这些字符串,应该不会再出现乱码问题。

    最后,请确保你的输入数据格式正确,字符串以 null 结尾,并且在 judge1judge2judge3judge4 函数中的逻辑正确,不会导致乱码输出。如果问题仍然存在,欢迎进一步交流。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月6日
  • 已采纳回答 11月28日
  • 创建了问题 11月23日