【发布时间】:2021-08-06 16:20:57
【问题描述】:
我有一个作业,其中我在 .txt 文件的一行中获得了一个人的信息,以空格分隔 (FIRST_NAME LAST_NAME AGE CITY),我需要打印出来自某个城市和年龄超过18. 所以完整的文件看起来像这样:
FIRST_NAME LAST_NAME 城市年龄
FIRST_NAME2 LAST_NAME2 CITY2 AGE2
FIRST_NAME3 LAST_NAME3 CITY3 AGE3
附:这是错误的 - 它应该是 AGE 然后是 CITY。这是确切的文件截图:
我尝试先将一行分隔为一个句子,然后使用 strtok() 对其进行标记,将每个标记放入相同信息(姓名、姓氏、城市、年龄)的数组中,最后将年龄和城市与请求进行比较那些。但是,我无法将令牌放入数组中。那么,有人可以帮助我以这种方式完成任务(如果它是正确的)或者有人可能有另一种方式吗?
这是现在的代码:
#include <stdio.h>
#include <string.h>
void main()
{
int i=0; //numerer
int pos=0;
char info[100]; // all info about one person
char imena[500]; //names
char prezimena[500]; //surnames
int godine[500]; //years
char mesto[500]; //cities
FILE *pok;
pok=fopen("C:/Users/Trajkovici/Desktop/OsobeFajl.txt","r");
if(pok==NULL)
{
printf("Greška prilikom otvaranja datoteke!");
}
fscanf(pok,"%[^\n]",&info);
puts("INFO: ");
puts(info); //dispalying full info
fclose(pok);
char * token = strtok(info, " ");
while( token != NULL || i<4)
{
puts("\nTOKEN:");
printf( " %s\n", token );
token = strtok(NULL, " ");
i++;
}
}
如果这是正确的方法,我怎样才能将令牌放入数组中?
【问题讨论】:
-
请不要显示纯文本的图片。只需将格式化文本复制并粘贴到您的问题中即可。正确的格式也很重要。不是为了编译器,而是为了读者。特别是对于初学者。您可以使用问题下方的
edit按钮来相应地改进问题。 -
您是否应该将所有文件内容存储在某个地方?否则,您不需要任何阵列。只需标记您阅读的行以及您需要对其进行的任何操作。不要费心存储它。
-
只有向 cmets 和答案提供反馈,StackOverflow 才能正常工作。