请问如何改写这个函数,返回一个整型数组.

xunfengxxx 2005-01-07 10:56:50
1.我先介绍我这个函数功能:
把输入的字符串如"22222 3333 333 "
22222 3333 33三个数字存入一个整型数组
函数要求写成
int * GET(char *s)
的形式
指针无法传递
在主函数调用的时候如何帮函数局部的变量还存在?
问过一个高手,说用指针的指针可以解决,不过没有给出具体的实现,请CSDN的大虾帮忙解决


/////////////////////
以下程序是我想的笨办法,供修改使用
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
static int num[100];
static char temp[4];
int GET(char *s)//请教如何把这个函数改成int* GET(char *s)就是把字符串里的数字存入这个数组并且数组不被销毁
{
int len=strlen(s);

int count=0;

int count1=0;
for(int i=0;i<len;i++)
{

temp[count1]=s[i];
count1++;
if(isspace(s[i]))
{
//cout<<"wwww"<<temp<<endl;;
num[count]=atoi(temp);
count1=0;
count++;
}

}
return count;//数组元素个数

}

void main()
{

char *ss="21 321 33213 ";
int count=GET(ss);
for(int i=0;i<count;i++)
cout<<num[i]<<endl;


}



问题2.
请问C语言的为何char数组可以测其长度?
而int 数组为何没有提供这个方法?
...全文
325 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuelong_zl 2005-01-08
  • 打赏
  • 举报
回复
mark先
YFY 2005-01-08
  • 打赏
  • 举报
回复
oo(为了名副其实,努力学习oo技术ing) ( ) 信誉:105
对...

可用strcspn(const char *str1,const char *str2)定位空格,取数据
Flood1984 2005-01-08
  • 打赏
  • 举报
回复
其他类型可使用相同的方法
Flood1984 2005-01-08
  • 打赏
  • 举报
回复
数组的长度取得方法:
如下定义时
int a[50];
int length;

数组长度length=sizeof(a)/sizeof(int);
cat_dog 2005-01-08
  • 打赏
  • 举报
回复
上面问题忘了释放内存,在main函数的最后应该加上一条free(pcount);

问题2.
请问C语言的为何char数组可以测其长度?
而int 数组为何没有提供这个方法?

不管是char数组还是int 数组都可以知道大小,但如果是分配的内存就不能这样做了。

int a[100];
char b[100];
int iLena = sizeof(a) / sizeof(int);
int iLenb = sizeof(b) / sizeof(char);

则iLena和iLenb都是100;
cat_dog 2005-01-08
  • 打赏
  • 举报
回复
问题1:
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
static int num[100];
static char temp[4];
int* GET(char *s)//请教如何把这个函数改成int* GET(char *s)就是把字符串里的数字存入这个数组并且数组不被销毁
{
int len=strlen(s);
int count=0;
int count1=0;
int *piReturn,iLen = 0; //定义两个变量,一个是返回的数组,一个是数组的大小

//下面计算有多少个数
for(int i=0;i<len;i++)
{
temp[count1]=s[i];
count1++;
if(isspace(s[i]))
{
iLen++;
}

}

//分配内存,数组一个做数组的大小
iLen++;
piReturn = (int *)malloc(iLen * sizeof(int));


for(int i=0;i<len;i++)
{

temp[count1]=s[i];
count1++;
if(isspace(s[i]))
{
//cout<<"wwww"<<temp<<endl;;
count1=0;
count++;
piReturn = atoi(temp);

}

}
piReturn[0] = iLen - 1;

return piReturn;//数组元素个数

}

void main()
{

char *ss="21 321 33213 ";
int *pcount=GET(ss);
for(int i=;i<*pcount;i++)
cout<<pcont[i]<<*endl;


}

yeehya 2005-01-08
  • 打赏
  • 举报
回复
这种写法不太好吧;在一个子函数申请了内存,没有释放,这样很容易被遗忘的.
为什么不这样写int getArray(int *arrayname,char* s)
现在要调用该函数的地方申请合适的内存,使用后释放.
dongpy 2005-01-08
  • 打赏
  • 举报
回复
1楼的方法很好!
snow810211 2005-01-07
  • 打赏
  • 举报
回复
楼上大哥说得很好。
oo 2005-01-07
  • 打赏
  • 举报
回复
用 int * GET(char *s)
这样的格式也没问题呀
在GET函数里先 int* temp = (int*)malloc(100*sizeof(int));;//大小你自己定了
temp[0]存放count,temp[1]开始存放字符串里得到的值
最后return temp;
在调用GET的地方,int* pRet = GET(ss);调用完GET后记得 free(pRet)

请问C语言的为何char数组可以测其长度?
而int 数组为何没有提供这个方法?
-------------
你说的char数组长度是字符串长度吧,strlen(ss),能求字符串长度是因为字符串是以'\0'结束的。
源码链接: https://pan.quark.cn/s/a4b39357ea24 在本研究中,我们将详细研究如何借助Python执行数据可视化,旨在剖析2018年期间中国四个主要城市——北京、上海、广州以及深圳的空气质量状况。通过绘制反映空气质量指数(AQI)与细颗粒物(PM2.5)变化趋势的图表,我们能够深入理解这些大都市全年的空气环境质量,并明确评估其优良天气所占的比重。 我们必须首先进行数据准备工作。在当前提供的压缩文件内,名为"2018天气"的文件极有可能是数据来源,其中可能收录了涉及四个城市每日空气质量监测的详细信息。这些数据通常涵盖日期、城市名称、AQI数值、PM2.5含量等核心参数。在Python编程环境中,我们惯常运用pandas库来对这类结构化数据进行高效的处理和分析。 1. **数据导入与初步处理**: - 利用`pandas.read_csv()`方法来导入存储为CSV格式的数据资料。 - 数据整理:对数据中的空白项、非正常数值进行修正,保证数据的精确性。 - 调整日期字段的格式,确保其能够适用于时间序列分析的需求。 2. **数据深度分析**: - 针对每个城市的AQI和PM2.5数据执行统计性描述,例如计算平均值、中位数、标准偏差等指标。 - 确定空气质量良好天气的天数,即那些AQI值低于75(依据中国的空气质量评估标准)的日数。 3. **数据呈现**: - 运用matplotlib或seaborn工具绘制折线图,直观展示四个城市在2018年全年的AQI和PM2.5变化动态。 - 可通过采用不同的颜色方案和线条类型来区分不同城市的数据系列。 - 添加必要的图示元素,如日期坐标轴、城市名称标注、图表标题及图例说明,以提升图表的可读...

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧