c++ - 从文件中读取 C++

标签 c++ fopen fgets

<分区>

我只想读取 IP 并在没有空格的情况下打印它们。这是我的部分代码:

 char buffer[256]
    dns_serv = fopen("dns_servers.conf", "rt"));
    log = fopen("logfile", "at")) ; 
    if (!fgets(buffer,sizeof(buffer), dns_serv)) {
                break;
            }       

            if (buffer[0] == '#') continue;
            if (buffer[0] == '\n') continue;

                if ((sockdns = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
                printf("Error\n");
                continue;
            }

            fprintf(log, "; %s - %s %s",buffer,argv[1], argv[2]);

这把我写在日志文件上:

; 141.85.128.1
 - google.com SOA

但我想把它写在同一行:

 ; 141.85.128.1 - google.com SOA

我的错误在哪里? 这是 dns_servers.conf:

# first example
141.85.128.1

# another
# 61.34.189.250

最佳答案

这里是使用标准 C++ 库的解决方案,因此:

#include <fstream>
using namespace std;

下一步代替:

dns_serv = fopen("dns_servers.conf", "rt"));
log = fopen("logfile", "at")) ; 

写:

ifstream dns_serv("dns_servers.conf", std::ifstream::in);
ofstream log("logfile", std::ofstream::out | std::ofstream::app);

代替:

if (!fgets(buffer,sizeof(buffer), dns_serv)) {
            break;
        }

写:

dns_serv.getline (buffer, sizeof(buffer));
if (dns_serv.fail ()) break;

最后代替:

fprintf(log, "; %s - %s %s",buffer,argv[1], argv[2]);

写:

log << "; " << buffer << " - " << argv[1] << " " << argv[2]; // << endl;

希望对你有帮助:) 我知道我破坏了你的 C 风格,但 C++ 纪律还不错。 ;)

关于c++ - 从文件中读取 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16748834/

相关文章:

C - 使用 fopen、fclose、fputc 等

c - 在 C 中使用 fopen() 使用字符数组作为文件名

c - 如何在C中分配多维数组所需的内存?

c - 从文件中读取带空格的字符串

c++ - 如何在它之外的模板类中使用模板参数?

java - C++多线程Java JNI方法调用

c++ - 将一个 slice_array 分配给另一个 slice_array 是否正确?

c++ - 64位架构优化

C、检查文件是否存在而不能读/写可能?

C:使用 fgets 读取用户输入时出现段错误