我需要接收并输入变量文本文件。 例如:
/*
system_1
6
challenge_2 22 2
challenge_3 33 3
challenge_4 44 1
challenge_5 55 3
challenge_6 66 3
challenge_1 11 1
4
room_2 1 22
room_1 3 11 44 66
room_3 3 55 33 11
room_4 4 22 44 55 66
*/
我知道每个单词(不是行)不超过50个字符。 将每个单词放在适当的(int,string ...)中的简单方法是什么。 此外,我需要知道线的结束位置,因为行中的字数不是常数。 我认为fscanf是最有效的,但我不知道如何将它用于行结尾等等...... 我很想看到一个使用fscanf的例子。
提前致谢。
答案 0 :(得分:-1)
效率更高,因为您不知道格式字符串使用fgets从文件返回一行,然后自己解析而不是使用scanf。
一个例子是这样的:
FILE* file = fopen("somefile.txt", "r");
char buffer[51];
while (fgets(buffer, 50, file)) {
// Buffer now stores the line, lets see if it can be an integer.
int possible_num = 0;
// sscanf will return 1 if it read a possible integer from the buffer.
if (sscanf(buffer, "%d", &possible_num) == 1) {
// We read a number, so possible_num is now the number.
}
else {
// We read a string, buffer stores the string.
}
}
注意:如果您的字符串类似于" 10hello",则代码将返回误报,因为sscanf仍将读取10.有多种方法可以检查字符串是否是有效的整数在C中,我确信你可以在StackOverflow上找到它,但是这段代码可以为你提供一个入门的地方。