Lansional 2022-11-11 15:10 采纳率: 91.5%
浏览 30
已结题

我定义的是整型数组,为什么要加字符串结束符,输出才不会报错

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

题目:输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个数字,依次存放到一数组中去。123放在a[0],456存放到a[1]

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

#include<stdio.h>

int main()
{
void search(char* pt);
char str[100];
printf("enter a string:");
gets(str);
char* p = str;
search(p);
return 0;
}

void search(char* pt)
{
int b[50];
int i, j = 0, flag = 0, sum = 0;
char z;
for (i = 0;*(pt + i) != '\0'; i++)
{
z = *(pt + i);
if (z >= '0' && z <= '9')
{
sum = sum * 10 + (z - '0');
flag = 1;
}
else
{
if (flag == 1)
{
b[j] = sum;
j++;
}
sum = 0;
flag = 0;
}
}
if (flag == 1)
{
b[j] = sum;
j++;
}
b[j] = '\0'; //为什么一定要加字符串结束符?

printf("Number of integers:%d\n", j);
printf("these numbers are:");
for (j = 0; b[j] != '\0'; j++)
{
    printf("%d\t", b[j]);
}

}

/*解题思路:输入一个字符串,筛选出字符串里的数字字符,再转化为数字,接着将数字存放到新数组中

  •        如果遇到其他字符,就将前面的字符存放到新数组中去,再判断下一个字符
    
  •        判断结束后,如果最后一个字符是数字字符,则需要在循环结束后,将数字存放到新数组中去
    
  • /
运行结果及报错内容

严重性 代码 说明 项目 文件 行 禁止显示状态
警告 C6001 使用未初始化的内存“b[BYTE:0]”。

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-11-11 15:17
    关注

    for (j = 0; b[j] != '\0'; j++)
    {
    printf("%d\t", b[j]);
    }
    因为你这个输出循环的结束条件是b[j] != '\0'啊!!!你为啥要写这个条件呢?????

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
  • ¥20 @microsoft/fetch-event-source 流式响应问题
  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?