栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言输入不定长度的整数或字符串 ,怎么接收?

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言输入不定长度的整数或字符串 ,怎么接收?

给定输入两行整数,第一行输入一定数量的整数,第二行输入第一行证书的长度,怎么用数组接收?最近遇到了这个问题,如果用c++很好解决,但是如果用c语言需要自己去创建一个可变长度的数组,需要借助malloc开辟一定长度的数组,等数组填满之后,用realloc函数去重新开辟新的数组地址,增加长度,这样能节省重新释放malloc开辟的地址和将malloc的内容复制到开辟之后地址上的步骤,代码如下:

#include 
#include 
#include 
#include 

#define STRLEN 20   //每次数组增加长度

int main() {
	int strSize = STRLEN, strLength = 0, input; 
    int* arr = (int*)malloc(sizeof(int)*STRLEN);
    while (scanf("%d",&input)) 
    {
        arr[strLength++] = input;
        if (strLength == strSize) {//当输入数组长度与开辟长都相等时
            strSize += STRLEN;//重新增加要开辟的长度
            arr = (int*)realloc(arr, sizeof(int) * strSize);//重新开辟地址,拷贝之前的数组内容,并释放之前内存
        }
    }
    //将最后一位数组正常度输出并移除
    int len=arr[strLength-1];
    arr[strLength-1]=0;
    strLength--;
    //以下为将结果输出,如不需要可以省略
    for (int i=0;i
        printf(" %d",arr[i]);
    }
    free(arr);
    printf("%d",len);
	return 0;
}

测试结果如下,当输入键盘Ctrl+z时scanf(“%d”,&input)返回EOF,其值为0,while循环结束:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847407.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号