首页 > 解决方案 > 在C中将行存储为变量

问题描述

假设我必须逐行读取一个“.txt”文件,该文件让我得到一堆中最低的结果并将它们存储为变量,以便之后打印它们(以毫秒为单位的平均速度,作为整数,通过“velocidad_media”函数,以及在提供此类结果时正在读取的文件的相应行):

int best_response = velocidad_media(fgets(ipresp, sizeof(ipresp), responses));
char best_ip;
responses = fopen("ips_responden.txt", "r");
while (fgets(ipresp, sizeof(ipresp), responses))
{
    int response1 = velocidad_media(ipresp);
    if (response1 < best_response) {
        best_response = response1;
        best_ip = response1;
    }
    printf("\n    Velocidad de respuesta media: %d ms.\n", best_response);
    printf("    IP seleccionada: %s", best_ip);
}

到目前为止,我能够存储这样的平均时间(如 best_response)。但我对“best_ip”位感到困惑。我不知道如何初始化或实现变量到我自己的代码,以便同时存储我实际阅读的行并给我“best_response”结果。

标签: c

解决方案


你需要

  • 分配缓冲区来存储一个字符串,而不仅仅是一个字符。
  • 存储线,而不是通过处理线获得的东西。

此外,您应该检查是否fopen()成功。

尝试这个:

int best_response = 0;
char best_ip[sizeof(ipresp)] = "";
int best_valid = 0;
responses = fopen("ips_responden.txt", "r");
if (responses != NULL)
{
    while (fgets(ipresp, sizeof(ipresp), responses))
    {
        int response1 = velocidad_media(ipresp);
        if (!best_valid || response1 < best_response) {
            best_response = response1;
            strcpy(best_ip, ipresp);
            best_valid = 1;
        }
        printf("\n    Velocidad de respuesta media: %d ms.\n", best_response);
        printf("    IP seleccionada: %s", best_ip);
    }
}

另请注意,您应该添加#include <string.h>到使用strcpy().


推荐阅读