所以这就是文件中的文本的样子:
locked y
locked n
position 90
position 2
audio-language "english"
audio-language "spanish"
每个文本文件只包含上面显示的一种设置,区别在于选项(y 或 n,1 到 999,“english”“spanish”“whatever else”)它前面有 4 个空格和一个新行每行的末尾,所以我需要一个 fscanf 来提取 char 数组字符串中的参数,但我似乎无法理解如何正确使用分隔符。我必须制作一个可以扫描该文件并打印不同设置以及在文件中找到它们的次数的程序,例如:
audio-language is found with setting: "spanish" 40 times
audio-language is found with setting: "english" 78 times
比你们所有人的答案!在这里,我可以向您展示我是如何使它工作的:
1 - 首先你使用一个功能(我在互联网上找到)消除设置前面的空格:
char* ltrim(char* s)
{
char* newstart = s;
while (isspace( *newstart)) {
++newstart;
}
// newstart points to first non-whitespace char (which might be '\0')
memmove( s, newstart, strlen( newstart) + 1); // don't forget to move the '\0' terminator
return s;
}
2 - 然后 fscanf 没有问题得到正确的行:
while(!feof(fpoo)) {
fscanf(fpoo,"%s %[^\n]",&first, &sec);
3 - 然后你比较 fscanf 得到的和用户输入的
就是这样,显然fscanf的整个问题是因为每行前面的空格。