C相当于C++;皮克

C相当于C++;皮克,c,newline,stdin,cin,peek,C,Newline,Stdin,Cin,Peek,C编程的cin.peek()的等价物是什么?我需要扫描文件中的'/r'和'/r/n'(这是DOS文件的行尾标记),因此如果当前字符是'/r',我需要提前“查看”下一个字符 谢谢 有一个ungect(),当你偷看字符时,它允许你将字符向后推(就好像它们还没有被读取一样) 作为读取+ungect()的替代方法,您可以逐个字符读取文件,只需跳过不必要的“\r”和/或“\n”或执行任何其他特殊处理即可。一个简单的状态机可能会有所帮助。试试: char c; FILE *fp; // opening fi

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

谢谢

有一个
ungect()
,当你偷看字符时,它允许你将字符向后推(就好像它们还没有被读取一样)


作为读取+
ungect()
的替代方法,您可以逐个字符读取文件,只需跳过不必要的“\r”和/或“\n”或执行任何其他特殊处理即可。一个简单的状态机可能会有所帮助。

试试:

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


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

这些也是现代Windows系统上的行尾标记,而不仅仅是“旧DOS”。如果您想进行面向字符的编程,我希望您理解正斜杠和反斜杠之间的区别。。。
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);
}