我想制作一段代码,在'\n'
出现之前读取字符串(它不会保存)。
在阅读完第一个字符串后,请说"And then none"
我希望它读取"Today"
。
问题是我得到的是:"Todaythen none"
我无法删除我插入的第一件事。
这是我的代码:
for(j=1; j<=num; j++){
while ( getchar() != '\n' );
c=getchar();
k=0;
while(c!='\n'){
*(title+k)=c;
c=getchar();
k++;
}
fscanf(fp, "%d", &downloads);
insertText(¤t->anAuthor->text, title, downloads);
strcpy(title, "");
}
答案 0 :(得分:0)
你需要在写入字符串后对字符串进行零终止,你现在得到的是旧字符串和新字符串的混合。例如,在title[k] = '\0'
循环后添加while
。
此外,您当前的代码并未确保k
不超过title
的分配大小,即lurking buffer overflow bug。