Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        3年前关闭。
                                                                                            
                
        
我正在使用fscanf()函数读取多行文件。我想忽略换行符,但不忽略文件中可能存在的其他空白字符。我怎样才能最好地做到这一点?

最佳答案

我认为这符合您的要求:

char ch[2];
while (fscanf(fp, "%1[^\n]%*[\n]", ch) == 1)
    putchar(ch[0]);


第一个格式说明符最多读取一个不是换行符的字符,并将其存储在字符串ch中,第二个格式符读取换行符,但禁止赋值。该循环的结果是打印文件中的所有字符,跳过换行符,直到EOF

@AnT在注释中指出,对于以换行符开头的文本文件,此方法将失败,并提出了解决办法:在禁止换位的同时读取换行的循环之前调用fscanf()。改进的代码是:

char ch[2];
fscanf(fp, "%*[\n]");
while (fscanf(fp, "%1[^\n]%*[\n]", ch) == 1)
    putchar(ch[0]);

关于c - 使用fscanf()忽略换行符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40559233/

10-13 09:42