C中的fscanf没有读完整行?

Shu*_*huo 2 c newline scanf

这非常简单,但我只是遇到了问题.

文本文件有一个标题,

例如,

# Avizo BINARY-LITTLE-ENDIAN 2.1

define Lattice 496 384 470

Parameters {
    AlignTransform {
        slice0000 0 -0 -30 -1,
        slice0001 0 -0 -30 -1,
        slice0002 0 -0 -30 -1,
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用fscanf读取每一行.

   int i;
   for (  i = 0; i < 10; i++ ) {
     fscanf(fp, "%s\n", buf);  
     printf("%d) %s\n",i,buf);
   }
Run Code Online (Sandbox Code Playgroud)

结果如此

0) #
1) Avizo
2) BINARY-LITTLE-ENDIAN
3) 2.1
4) define
5) Lattice
6) 496
7) 384
8) 470
9) Parameters
Run Code Online (Sandbox Code Playgroud)

所以它解析空格而不是换行符.不确定发生了什么.

Oki*_*ata 9

我建议您使用fgets,但如果您坚持使用fscanf:

fscanf(fd, "%[^\n]\n", buff);
Run Code Online (Sandbox Code Playgroud)

这将读完整行.


MBy*_*ByD 6

%s在符fscanf读的话,那么在到达一个空当它停止.

使用fgets阅读一整行.