c - 在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”结果。
解决方案
你需要
- 分配缓冲区来存储一个字符串,而不仅仅是一个字符。
- 存储线,而不是通过处理线获得的东西。
此外,您应该检查是否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()
.
推荐阅读
- php - 在php中从mysql数据库中拆分字符串
- vb.net - 我该如何解决这个错误=索引超出范围。必须是非负数且小于集合的大小。参数名称:索引"
- javascript - 动态更新 JSON 数据
- javascript - 万用表。如何按名称引用循环中的索引变量
- angular - Angular 2 AOT moduleFactory.moduleType 未定义
- linux - 使用 hciattach 通过 USB 的蓝牙设备
- python - 在 Python 中返回“无”的另一个递归(多个参数)
- javascript - Three.js 中的画布纹理模糊
- android - MVVM BindingAdapters 未显示 ProgressBar
- java - 使用连接和自定义参数构建条件查询