如何将.Dat文件中的字符放入c语言中的字符字符串保持器

如何将.Dat文件中的字符放入c语言中的字符字符串保持器,c,C,然后将其放入.Dat文件中。 然后从最高到最低排序。 然后输出前20名(因此,如果dat中的某些分数被忽略,则仅输出20名。) 代码中唯一的问题是如何从文件中获取它。我知道如何分类。但是我怎么得到它呢 您需要在fcanf 您需要使用strcpy复制学生姓名 使用以下命令: 4 Name1 100 Name2 900 Name3 800 Name4 150 带字符串格式化程序的scanf可能有点棘手,我建议您改为执行以下操作: i = 0;

然后将其放入.Dat文件中。 然后从最高到最低排序。 然后输出前20名(因此,如果dat中的某些分数被忽略,则仅输出20名。)

代码中唯一的问题是如何从文件中获取它。我知道如何分类。但是我怎么得到它呢

  • 您需要在
    fcanf

  • 您需要使用
    strcpy
    复制学生姓名

  • 使用以下命令:

     4
     Name1 100
     Name2 900
     Name3 800
     Name4 150
    

    带字符串格式化程序的scanf可能有点棘手,我建议您改为执行以下操作:

            i = 0;            
            fscanf(fptr,"%s %d", &stud.name, &stud.score);
            fgetc(fptr);
            while(!feof(fptr)) {
                 strcpy(temp[i].name,stud.name);
                temp[i].score = stud.score;
                fscanf(fptr,"%s %d", &stud.name, &stud.score);
                fgetc(fptr);
                i++;
            }
            system("pause");
            x=sizeof(fptr);    
    
    for(int i=0;i
            i = 0;            
            fscanf(fptr,"%s %d", &stud.name, &stud.score);
            fgetc(fptr);
            while(!feof(fptr)) {
                 strcpy(temp[i].name,stud.name);
                temp[i].score = stud.score;
                fscanf(fptr,"%s %d", &stud.name, &stud.score);
                fgetc(fptr);
                i++;
            }
            system("pause");
            x=sizeof(fptr);    
    
    for (int i = 0; i < x; ++i)
    {
      char buffer[255];
      if (fgets(buffer, sizeof(buffer), fptr) != NULL)
      {
        char *p = strchr(buffer, ' '); // find ' '
        if (p!=NULL)
        {
          *p++ = '\0'; // terminate first string
          strncpy(temp[i].name, buffer, MAX); // copy string
          temp[i].name[MAX-1] = '\0'; // in case name is too long, truncate
          temp[i].score = atoi(p); // get score, whitespace will be ignored
        }
      }
    }