gpt4 book ai didi

c - 使用嵌套循环而不弄乱标准输入中的缓冲区位置

转载 作者:行者123 更新时间:2023-11-30 19:10:42 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com