作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
while (1) {
palindrome = my_string_init_default();
while (1) {
ch = getc(stdin);
if (ch == '\n') {
break;
}
else {
continue;
}
palindrome->push_back(palindrome, ch);
}
if (is_palindrome(palindrome)) {
printf("Yes \n");
}
else {
printf("No \n");
}
palindrome->destroy(&palindrome);
}
return 0;
}
我试图基本上检查文本是否是回文。这部分代码没有在这里显示,并且工作得很好。我想做的是读取输入直到行尾。然后将该行视为一个字符串,我检查它是否是回文。但我不能在那里结束程序,而是必须转到下一行并继续迭代,直到到达 EOF。我如何在这里做到这一点而不弄乱我的缓冲区位置。我可以在这里使用 fseek 吗?
最佳答案
你永远不会到达 palindrome->push_back(palindrome, ch);
(因为要么中断,要么跳到下一个迭代)。
使用这个:
while (1) {
ch = getc(stdin);
if (ch == '\n') {
break;
}
// otherwise:
palindrome->push_back(palindrome, ch);
}
更新。据我了解您需要什么,您可以这样做(假设每一行,甚至最后一行,都以 \n
结尾,因为它应该在 UNIX 中):
while (1) {
palindrome = my_string_init_default();
while (1) {
ch = getc(stdin);
if (ch == '\n' || ch == EOF) {
break;
}
palindrome->push_back(palindrome, ch);
}
if (ch != EOF) {
if (is_palindrome(palindrome)) {
printf("Yes \n");
}
else {
printf("No \n");
}
}
palindrome->destroy(&palindrome);
if (ch == EOF) {
break;
}
}
return 0;
}
关于c - 使用嵌套循环而不弄乱标准输入中的缓冲区位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41001132/
我是一名优秀的程序员,十分优秀!