首页 > 编程知识 正文

c语言长度输入,输入任意长度字符串c语言

时间:2023-12-29 13:16:33 阅读:329760 作者:VULE

本文目录一览:

C语言字符串输入长度

其实那样是错误的!!

因为地址已经越界了!!

之所以能输出是因为你马上输出和%s,%s是以字符串的形式输出,要是%c的话你就不知道下一个地址在哪了!

要是一不小心会将系统的某些文件的内容给覆盖!!所以最好别用!!!

还有劝楼主写头文件时如果不是在家定义的最好写成下面的形式

#include stdio.h

系统头文件一般最好写成这样,能节省运行时间,提高效率!

在c语言中如何输入一个特别长的数

在目前的32位编译器中(含多数的64位编译器)int与long的长度都是相等的,都是32位的它的unsigned范围为0到4,294,967,295 当然,一般的运算也够了(因为大数一般用浮点)如果你的编译器支持64位(long long或__int64)那它的unsiged范围可达18446744073709551615当然,如果你觉得还不够大,就要自己用数组处理了(网上也有大数运算的库)

c语言如何输入任意长度的字符串数组

“任意长度”实际上是做不到的,即使所用的软件平台没有限制,硬件环境也不允许。所以“任意长度”应当理解为在一个很大的空间之内没有限制地输入字符串而不用事先确定长度。鉴于这种理解,可以定义一个输入函数,先动态申请一个较大的空间,直接向其内输入字符串;输入完毕后检测其长度,再按实际需要申请一个合适大小的空间,把刚才输入的字符串拷贝到这个合适大小的空间里,再把原先申请的大空间释放。举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

#define N 131071

char *Any_Long_Str(char *p){

    char *pt;

    if((pt=(char *)malloc(N))==NULL){//Apply for a larger space for temporary use

        printf("Apply for temporary use of space to fail...n");

        exit(0);

    }

    gets(pt);//Get a string from the keyboard

    if((p=(char *)malloc(strlen(pt)+1))==NULL){//Apply for a suitable size of space

        printf("Application memory failure...n");

        exit(0);

    }

    strcpy(p,pt);//Copy the string pt to p

    free(pt);//Release the temporary use of space

    return p;

}

int main(void){

    char *pstr=NULL;

    printf("Input a string:n");

    pstr=Any_Long_Str(pstr);

    printf("%sn",pstr);//Look at...

    free(pstr);//Release the space

    return 0;

}

c语言中怎么实现任意长度字符串输入

其实核心就是实现动态数组,无论字符串多长,都能够储存。

用getchar一个一个得到字符,直到文件结束。

核心代码实现:

        int n=0,k=100;            //初始化,字符串长度为0,字符串空间长度为100

        char * s2 = NULL,s1 = (char *)malloc(100);    //初始化字符串空间

        if (s1 == NULL)   return;                    //内存分配失败,返回         

        while((c=getchar())!=EOF){        //判断是否到文件结束,一个个读取字符

            if(k=n){                    //当前字符串长度大于等于字符串空间长度时

                k*=2;                    //长度增长2倍

                s2 = (char *)realloc(s1,k);    //重新分配内存

                if(s2 == NULL){                //内存分配失败

                    free(s1);              //释放已分配内存

                    return;

                }else{                     //内存分配成功

                    s1=s2;

                }    

            }

            s1[n++]=c;                    //字符串赋值字符

        }

        s1[n]=0;                          //字符串末尾置为

c语言怎么输入任意长度的一个数组

首先 严格来说 不可能出现任意长度。 内存是有限的 超出一定长度后,不可能存的下,虽然这个值可能是超级大的,但总有限度。

其次,所谓的任意长度,其实就是可变长数组。

那么,在事先不知道数组规模下,就要靠输入,来确定数组大小了。

重点在于,要开辟多大的数组来存

一般有这么几种情况

1 直接开一个足够大的。 比如 虽然不知道有多大,但最大不超过1000个,那就可以直接开个1000元素的数组。

2 动态分配, 使用malloc动态分配内存。

当出现可能的不够情况,用realloc重新分配。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。