C语言第七次实验课第三题——指针
sy7_3.c
字符串提取处理,编写main函数,输入字符串,调用函数extract把字符串中一串连续数字字符合并一个八进制整数,作为十进制整数存入int类型数组中,并输入。要求:extract(char*,int d[])。
测试数据:1)输入100bc89202*1,将输出64 130 1。
2)输入q2t0,将输出2 0。
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void extract(char *a,int d[]);
int main()
{
int d[100];
char a[100];
printf("请输入字符串:\n");
gets(a); //gets字符串(输入字符串)
extract(a,d);
return 0;
}
void extract(char *a,int d[])
{
int i,j=0,flag=0,t=0;
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='0'&&a[i]<='7'&&flag==0)
{
flag=1; //flag用于标记
t=(int)a[i]-'0'; //将字符数组某一元素八进制数(视作)放在t中(字符型数组转化为数字数字[字符串里的数字属于字符]——强制类型转换)
//字符数组里面的数字是以ascll码储存,整型数组里面的数字是以该整数储存
//所以减去'0'(0的ascll码)
} //结束第一个if并i+1
else if(a[i]>='0'&&a[i]<='7'&&flag!=0)
t=t*8+(int)a[i]-'0'; //flag的作用开始显现:将高位*8+a[下一位]放入t中
else if(flag!=0) //识别到了字符串里的字母
{
d[j]=t; //存储数字
j++;
flag=0; //重置flag为0
}
}
if(a[i-1]>='0'&&a[i-1]<='7') //当循环最后一个数为数字时:执行了第二个if(将数字变成八进制放在t中)并没有执行第三个if,因此补充一个if用来将t放入数组d中
{
d[j]=t;
j++;
}
int k=0;
for(k;k<j;k++)
{
printf("%d ",d[k]); //输出数组d
}
}

浙公网安备 33010602011771号