数组(C语言)。。。。。。。。。

利用单个字符输入/输出函数从键盘输入任意长度字符串,并逐一输出该字符串

c

3个回答

#include <stdio.h>

void main( void )
{
   char line[81];

   printf( "Input a string: " );
   gets( line );
   printf( "The line entered was: %s\n", line );
}

要任意长度,就得使用琏表,数组成都肯定是固定的,你的问题自相矛盾。

可以通过动态数组来实现。


C语言参考代码:

 #include <stdio.h>
 #include <stdlib.h>//malloc realloc需要

 int main(void)
 {
     char *s=(char *)malloc(1);//分配一个char大小的堆空间(char大小通常为1个字节)
     unsigned int s_len=1;//标识s指针所指连续空间的大小(有点像定义定长数组s[s_len])
     char tmp;//字符缓存变量
     while(1)
     {
        tmp=getchar();//读入一个字符
        if(tmp=='\n')//如果输入的是回车,则写入字符串结束标志\0
        {
            *(s+s_len-1)=0;
            break;
        }
        *(s+s_len-1)=tmp;//将读入的字符写入申请的堆空间中的最后一个字节(相当于定长数组s[sizeof(s]-1])
        s_len++;
        s=(char *)realloc(s,s_len);//重新分配堆空间,这里分配的堆空间大小比之前的要多一个char大小(1个字节)
    }
    printf("%s\n",s);//输出
    free(s)//释放之前申请的堆空间,防止内存泄露
    return 0;
}



Loongson2012
798VHS 抱歉。。看漏了题目,如果需要单个字符输出的话可以将printf换成一个for循环循环s_len-1次,循环体里面用putchar(*(s+i))输出单个字符(假如循环变量为i)
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐