C/C++,指针和字符串的一点小问题

typedefstructFileStruct{char*ch;structFileStruct*next;}FileStruct;FileStruct*p;为ch申请了... typedef struct FileStruct
{
char *ch;
struct FileStruct *next;
}FileStruct;
FileStruct *p;
为ch申请了80个字符的空间(超出80字符的话要存到下一节点中),想一个字符一个字符的读到ch中,但是我过程中移动了ch,导致我输出的时候只能输出最后一个字符,我用p->ch[XX]输入,但是输出的时候剩余的空间里输出乱码。我希望使用p->ch直接输出全部字符,求方法。
额,还需要读入回车键
展开
 我来答
kaixingui2012
2014-03-28 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6390万
展开全部
为ch多申请一个字符空间,写入数据时,如果达到80,则第81位写'\0',这样表示存储了一个字符串,这样直接cout << p->ch ;就不会有问题了。
如果最后一个结点不足80个字符,则p->ch[XX+1]=‘、0’; 这样就不会输出乱码了。
追问
其实最终的目的是操作一个记事本一样的程序,后续要求是可以移动插字符在任意地方再输入文字,如果都设为空格键,那这个后续不是出现了问题?
追答
如果你不是定义的字符串类型,就不能直接调用cout ch; 这样来输出数据。

'\0'表示的不是空格,是字符串结束符。
对于你移动、插入数据操作,你可以在不影响字符串数据结构的情况下进行程序处理。

当然,你这种方法处理记事本的功能,不是很爽。可以说,问题是你解决方法的不当造成的。
可以考虑换另外的方法来实现,如用String类型来实现。
xoaxa
2014-03-28 · TA获得超过8609个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3464万
展开全部
#include <iostream.h>

typedef struct FileStruct {
char *chs;
struct FileStruct *next;
}FileStruct;

int main() {
int i = 0;
char *p;
FileStruct myfile;
myfile.chs = new char[80];
cin.getline(myfile.chs,80);
p = myfile.chs;
while(myfile.chs[i])
cout << myfile.chs[i++];
cout << endl;
myfile.chs = p;
cout << myfile.chs << endl;
return 0;
}
追问
谢谢回答,但是这样的话80个字符之后的输入就没办法存入下一节点了,所以我觉得不能直接使用cin.getline。还有别的办法吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-28
展开全部
自己写个get_word( char*, int limit) 函数应该就行了吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式