但是我怎样根据输入去定义空间?有没有办法
再用一个临时数组,比如
fgets会读輸入127个字节如果一行没读完,剩下的还会在缓冲区里而且fgets会把回车也读入进去。
所以你直接用strchr判断一下这个temp里有没有'\n'如果有说明一荇读完了。直接strcpy给ch就可以了
如果没读完的话,就realloc扩充ch的大小同样strcpy给ch,然后fgets新读入并把新的内容strcat给ch就可以了,如此循环
大概是这样吧,简单说就是你申请个自己很久都用不完的空间把字符往里存...
总之就是用这个临时数组temp不断循环的用fgets将一行各个部分读入,并strcat不断合並到ch上去
不过有的系统stdin的内部buffer只有256个字节或4096个字节。反正如果你嫌麻烦只读入256字节不再realloc也行,毕竟大于256个字节的输入情况十分少见剩下的直接丢掉算了。
额!我还以为 存在我刚想的那种思路: 输入大小为20 个字符串直接存储为20byte呢。
可以根据输入的内容的长度用realloc随时擴展*ch的内存空间。