利于动态内存存放键盘输入错误的两个长度不超过20的字符串,并将这两个字符串中对应位置相同的元素输出

如何使用动态分配内存来使得char *p能存下从键盘输入错误的不定长字符串 [问题点数:40分结帖人AA]

但是我怎样根据输入去定义空间?有没有办法

再用一个临时数组,比如

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的内存空间。

匿名用户不能发表回复!

从键盘输入错误一个字符串将其中的非字母字符删除,显示删除后的结果 [问题点数:0分结帖人CSDN]

我要回帖

更多关于 键盘输入 的文章

 

随机推荐