我有以下basket.txt文件如何閱讀txt文件
Center
defence=45
training=95
Shooter
points=34
Rebounds=7
Shooter
points=8
Rebounds=5
Forward
points=8
Rebounds=5
我想,只顯示了射手價值的一部分。要返回這樣的事情:
Shooter
points=34
Rebounds=7
Shooter
points=8
Rebounds=5
我的想法是通過線與中的strstr使用讀取文件行時找到字符串射手然後再打印一切在它上面。但是,下面的代碼
int main()
{
static const char filename[] = "basket.txt";
FILE *file = fopen (filename, "r");
if (file!= NULL)
{
char line[128];
while (fgets (line, sizeof line, file)!= NULL)
{
char *line1 = strstr(line,"Shooter");
if (line1)
{
while (fgets (line, sizeof line, file)!= NULL)
fputs(line,stdout);
}
}
fclose(file);
}
else
{
perror(filename);
}
return 0;
}
它返回我
Shooter
points=34
Rebounds=7
Shooter
points=8
Rebounds=5
Forward
points=8
Rebounds=5
那麼,怎樣才能改變我的代碼,有我想要的結果?
UPDATE
我改變了while循環
while (fgets (line, sizeof line, file)!= NULL)
{
char *line1 = strstr(line,"Shooter");
if (line1)
{
fgets (line, sizeof line, file);
while (line[0] != '\n')
{
fputs(line,stdout);
fgets (line, sizeof line, file);
break;
}
但現在
points=34
points=8
結果是不退還我射擊的籃板。
您在包含「射手」的第一行後打印_every line_。這個結果真的如此出乎意料嗎? (提示:什麼時候你的循環終止?) –
「這不是我想要的結果」 - 那爲什麼不做你想要的?這當然正在做你正在告訴它。 –
是的,我知道。所以問題是如何更改我的代碼以獲得我想要的結果。 – dali1985