首页 > 解决方案 > 无法在 C++ 中读取 .cpp 文件

问题描述

(抱歉我的英语不好)你好,我试图用 C++ 读取一个 .cpp 文件,然后......是的,他读得不好:

#include <iostream>
#include <stdio.h>
int main() {
std::cout << "FILEREADER 2000 \n" ;
FILE* file = fopen("C:/Users/michi/OneDrive/Desktop/Yeah.cpp", "rb");
char c;
char buffer[255];
c = fgetc(file);
int counter = 0;
while (c != EOF) {
    c = fgetc(file);
    fgets(buffer,255,file);
    puts(buffer);
}
fclose(file);
int x;
scanf("%d", x);
return 0;
}
//test

和输出:

FILEREADER 2000
nclude <iostream>

include <stdio.h>

nt main() {

std::cout << "FILEREADER 2000 \n" ;

FILE* file = fopen("C:/Users/michi/OneDrive/Desktop/Yeah.cpp", "rb");

char c;

char buffer[255];

c = fgetc(file);

int counter = 0;

while (c != EOF) {

        c = fgetc(file);

        fgets(buffer,255,file);

        puts(buffer);

}

fclose(file);

int x;

scanf("%d", x);

return 0;



/test
/test

所以你可以看到:nclude, nt main...

对不起,我的英语不好

标签: c++

解决方案


这是你的问题:

c = fgetc(file);
int counter = 0;
while (c != EOF) {
    c = fgetc(file);
    fgets(buffer,255,file);
    puts(buffer);
}

第一个 fgetc 读取第一行中的 #。循环内的那个从每一行读取第一个字符。但是你没有对那个角色做点什么,这就是为什么你的推杆让你失望的原因。

另请注意,您的 fgets 获取整行 - 包括末尾的换行符。但是 puts 将整个字符串——包括换行符——加上一个换行符,这就是为什么你的输出是双倍行距的。


推荐阅读