鱼C论坛

 找回密码
 立即注册
查看: 1002|回复: 8

求助一下小问题

[复制链接]
发表于 2020-7-8 14:05:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为啥第二次输入会出来一堆呀,每次都这样

输出结果为啥是(null)啊,求助!
QQ图片20200708114314.png
QQ截图20200708114213.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-8 15:05:06 | 显示全部楼层
1. L17 - L26 之间的代码,看起来没有拷贝  '\0' , 同时 你的 k 清零了吗?应该是在第二次输入的时候,覆盖了 '\0',在 L27 之后添加 k=0;

2. 你每次输入的字符串长度都是2,但是你的 act1, act2 却都是4,这就很迷,推测后面是 '\0' 被你冒泡排序置换到了 str[0] 的位置。

3. 你这个问题,单步调试,观察每个变量的内存,一分钟就能解决。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 15:06:21 | 显示全部楼层
楼主,以后还是发复制粘贴代码吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 15:19:56 | 显示全部楼层
你这个程序我看的都一愣一愣的,全程用一个str数组存储所有结果,不出错才怪
应该声明一个int数组,读取一个数字就调用atoi函数将字符串转换为int并存入数组中,然后将str清空
最后直接比较int数组中的值
参考以下代码(纯手撸,没经过调试)
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <iostream>

  5. using namespace std;
  6. int main()
  7. {
  8.         char str[256] = {0};
  9.         int k = 0;
  10.         int nums[5] = {0};
  11.         for (int i=0; i<5; i++)
  12.         {
  13.                 printf("请输入数字:");
  14.                 cin>>str;
  15.                 nums[k] = atoi(str);
  16.                 printf("%d\n", nums[k]);
  17.                 k++;
  18.                 memset(str, '\0', sizeof(str));
  19.         }
  20.        
  21.         for (int act1=0; act1 < 5; act1++)
  22.         {
  23.                 for (int act2=0; act2 < act1; act2++)
  24.                 {
  25.                         if (nums[act2] > nums[act2 + 1])
  26.                         {
  27.                                 int temp = nums[act2];
  28.                                 nums[act2] = nums[act2 + 1];
  29.                                 nums[act2 + 1] = temp;
  30.                         }
  31.                 }
  32.         }
  33.        
  34.         printf("冒泡排序:")
  35.         for (int i=0; i<5; i++)
  36.         {
  37.                 printf("%d ", nums[i]);
  38.         }
  39.         return 0;
  40. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-8 16:27:53 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-7-8 15:06
楼主,以后还是发复制粘贴代码吧

第一次搞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-8 16:32:21 | 显示全部楼层
lhgzbxhz 发表于 2020-7-8 15:19
你这个程序我看的都一愣一愣的,全程用一个str数组存储所有结果,不出错才怪
应该声明一个int数组,读取一 ...

好的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 09:29:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 09:29:59 | 显示全部楼层
本帖最后由 认真学习的pea 于 2020-7-14 10:01 编辑

可能是gets函数调用之后缓存区没有清除
gets函数使用之后将缓存区清除
在gets后面加一个while(getch()!='\n');就可以清除缓存区了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 10:35:36 | 显示全部楼层
认真学习的pea 发表于 2020-7-14 09:29
可能是gets函数调用之后缓存区没有清除
gets函数使用之后将缓存区清除
在gets后面加一个while(getch()!=' ...

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 17:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表