我有一个txt文件,其中包含一堆程序需要从中读取的信息。
端口:1337
IP:“ IP”
目录:“”
我需要能够存储每行中“:”之后的所有内容,并将字符串的一部分另存为变量,例如。 int port = 1337,类似这样的东西?
我应该使用什么功能以及如何格式化它,以使其尽可能少地使用代码。
答案 0 :(得分:1)
看看fscanf()。只要输入总是 正确的格式,它就会为您填充变量。
答案 1 :(得分:1)
您可以为此使用strtok
和strtol
函数(如果您正在从字符串中读取):
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
的参数中。