利用单个字符输入/输出函数从键盘输入任意长度字符串,并逐一输出该字符串
#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;
}