问题遇到的现象和发生背景
题目:输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个数字,依次存放到一数组中去。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]”。