c语言中,怎么定义一个随意大小的字符串呢?

int main()
{
//string str;
//cin>>str;
//cout<<str<<endl;有什么办法用c语言来表示这段代码呢?要求不定义字符串的长度,输入时不用循环。
return 0;
}

你要的随意大小字符串,刚出炉,还是热的。

#include <stdio.h>
#include<malloc.h>
#include<string.h>
#define maxsize 10
int main()
{
    char *str,*strSave,cSave;
    int i,n=2,strSize;
    strSize=maxsize;
    str=(char *)malloc(sizeof(char)*strSize);
    printf("输入任意长度字符串:");

    for(i=0;i<strSize;i++)
    {
        scanf("%c",&cSave);
        if(i==strSize-1)//当输入到预设内存地址最后一位
        {
            if(cSave=='\n')
            {
                cSave=0;
                str[i]=cSave;
            }
            else
            {
                str[i]=0;
                strSize=maxsize*n++;
                strSave=str;
                str=(char *)malloc(sizeof(char)*strSize);//当内存不够,增加1倍
                strcpy(str,strSave);//新内存空间继承数据
                str[i]=cSave;//保存新输入值
                free(strSave);//释放旧内存空间
                strSave=NULL;//防野指针
            }
        }
        else
        {
            if(cSave=='\n')
            {

                cSave=0;
                str[i]=cSave;
                break;
            }
            else
            {
                str[i]=cSave;
            }
        }
    }

    printf("打印输入的字符串为:%s",str);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-15

“随意大小”肯定是做不到的,即使软件平台不作限制,硬件资源也是有限的。正确的理解应当是使用者的主观感觉上没有上限限制。其于这种理解,下面提供的代码能做到这一点:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include ""
#include ""
#include ""
char *mygets(char *p){
    int N = sizeof(int)==4 ? 262144 : 32767;
    char *q;
    if((q=(char *)malloc(N))==NULL){//申请一个足够大的临时空间
        printf("Application memory failure...\n");
        return NULL;
        exit(0);
    }
    gets(q);
    if((p=(char *)malloc(strlen(q)+1))==NULL){//按实际需要申请空间
        printf("Failed to create a string...\n");
        return NULL;
        exit(0);
    }
    strcpy(p,q);
    free(q);//释放临时空间
    return p;
}
int main(void){
    char *str=NULL;
    printf("Input a string...\n");
    if(!(str=mygets(str))) return 0;
    printf("%s\n",str);
    free(str);
    return 0;
}

第2个回答  推荐于2018-02-15
c语言不能实现,字符串本质上还是字符数组以‘\0’字符结尾,在分配空间时必须指定数组长度,
例如:char str[]="abcdef";本回答被提问者和网友采纳
第3个回答  2014-09-29
C是不可能实现的
如果你要用C实现,至少要提供一个长度参数

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网