如何处理字符串以将它们的一部分存储为变量?

时间:2019-05-27 00:43:11

标签: c

我有一个txt文件,其中包含一堆程序需要从中读取的信息。

  • 端口:1337

  • IP:“ IP”

  • 目录:“”

我需要能够存储每行中“:”之后的所有内容,并将字符串的一部分另存为变量,例如。 int port = 1337,类似这样的东西?

我应该使用什么功能以及如何格式化它,以使其尽可能少地使用代码。

2 个答案:

答案 0 :(得分:1)

看看fscanf()。只要输入总是 正确的格式,它就会为您填充变量。

答案 1 :(得分:1)

您可以为此使用strtokstrtol函数(如果您正在从字符串中读取):

int port = 0;
char *tmp_str;
strtok(port_str, ": ");
tmp_str = strtok(NULL, ": ");
port = strtol(tmp_str, NULL, 10);

等。

否则,请使用fscanf格式的输入:

fscanf(file_pointer, "%*s%d", &port);
fscanf(file_pointer, "%*s%s", ip_str);
fscanf(file_pointer, "%*s%s", dir_str);

格式说明符中的*告诉fscanf忽略读取的字符串(“端口”,“ IP”,“目录”等),然后忽略:(冒号+空格)告诉fscanf忽略冒号及其后的任何空格。然后fscanf将整数或字符串(分别为%d%s)读入传递给fscanf的参数中。