C 相当于 c++ cin.peek()

发布于 2024-12-29 17:37:12 字数 108 浏览 2 评论 0原文

C 编程中的 cin.peek() 相当于什么?我需要扫描文件中的“/r”和“/r/n”(这些是 DOS 文件的行尾标记),因此如果当前字符是“/r”,我需要“查看”下一个字符'

谢谢!

What is the equivalent of cin.peek() for C programming? I need to scan files for '/r' and '/r/n' (these are the end of line markers for DOS files) so I need to "peek" ahead to the next character if the current character is a '/r'

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

逆光飞翔i 2025-01-05 17:37:12

ungetc(),它允许您在查看字符时将其推回(就好像它们尚未读取一样)。

http://www.zyba.com/reference/computing/c /stdio.h/ungetc.php

There is ungetc(), which allows you to push characters back (as if they were not already read), when you've peeked at them.

http://www.zyba.com/reference/computing/c/stdio.h/ungetc.php

硪扪都還晓 2025-01-05 17:37:12

作为 read+ungetc() 的替代方案,您可以逐字符读取文件,并跳过不必要的 '\r' 和/或 '\n' 或对它们执行任何其他特殊处理。一个简单的状态机可以提供帮助。

As an alternative to read+ungetc(), you could read your file character by character and just skip unnecessary '\r' and/or '\n' or perform any other special handling of those. A trivial state machine can help.

世态炎凉 2025-01-05 17:37:12

尝试:

char c;
FILE *fp;
// opening file, etc.
if((c = getc(fp)) == '\r')
    ungetc(c, fp);

或者:

char c;
FILE *fp;
// opening file, etc.
fread(&c, sizeof(char), 1, fp);
if(c == '\r')
{
    fseek(fp, -1L, SEEK_CUR);
    fwrite(&c, sizeof(char), 1, fp);
}

如果您需要读取两个值(如“\n\r”),您可以使用短格式来存储它,并用它的数值进行测试

try:

char c;
FILE *fp;
// opening file, etc.
if((c = getc(fp)) == '\r')
    ungetc(c, fp);

or:

char c;
FILE *fp;
// opening file, etc.
fread(&c, sizeof(char), 1, fp);
if(c == '\r')
{
    fseek(fp, -1L, SEEK_CUR);
    fwrite(&c, sizeof(char), 1, fp);
}

if you need to read two values(as "\n\r"), you can use a short for storing it, and the test with it's numeric value

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文