将txt文件转换为邻接列表

时间:2014-05-20 16:50:49

标签: c

S,John 2 MATH101 CSE100
K,Jack 2 BLAW203 MATH101 
B,Brown 2 STAT253 MATH259 
G,Mary 3 MATH259 HIST111 STAT253 

这是我的txt文件,我想转换邻居列表。

矩阵中的课程以数字命名,如下所示:

0 - MATH101 
1 - CSE100 
2 - BLAW203 
3 - STAT253 
4 - MATH259 
5 - HIST111 

如何在C中读取和转换附件列表?谢谢。

2 个答案:

答案 0 :(得分:0)

这是解析部分 - 现在使用结构创建一个列表并检查已经插入的元素。

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

int main()
{ 

    FILE *in = fopen("newfile","r");
    FILE *out = fopen("newfile2.txt","w");
    size_t snby = 1024;
    char *lineBuf = malloc(1024*sizeof(char));
    char *tmpVal;
    char *maxVal;
    int loop = 0;
    int gar = 0;
    int line = 0;
    while(getline(&lineBuf, &snby, in) != -1)
    { 
            if (gar == 0)
            {
                fprintf(out, "%d - ", line);
                line++;
                gar++;
            }
            else
            {
                fprintf(out, "\n%d - ", line);
                line++;
            }
            line++;
            int mark = 0;
            tmpVal = lineBuf;
            while(mark != 2)
            {
                if (*tmpVal == ' ') mark++;
                tmpVal++;
            }
            while(*tmpVal != '\n')
            {
                if(*tmpVal == ' ')
                {
                    fprintf(out, "\n%d - ", line);
                    line++;
                }
                else
                {
                    fprintf(out, "%c", *tmpVal);
                }
                tmpVal++;
            }


    }
    free(lineBuf); 
    fclose(out);
    fclose(in);
    return 0;
}

答案 1 :(得分:0)

这是可以做到的一种方式:

      
  1. 打开输入文件。在READ模式下。
  2.   
  3. 输入循环以读取输入文件中的所有行。
  4.   
         
    1. 从文件中读取第一行。
    2.    
    3. 分配新的学生列表节点。
    4.    
    5. 将学生姓名从lineBuf字段解析为newStudentNode-&gt; name
    6.    
    7. 从lineBuf中解析课程数。
    8.    
    9. 输入一个循环来解析lineBuf中的每个课程名称。
    10.    
            
      1. 解析课程名称。
      2.     
      3. 将课程名称转换为课程编号。
      4.     
      5. 分配新课程节点。
      6.     
      7. 将newCourseNode插入newStudentNode的courseList的尾节点。
      8.        
      9. 将newStudentNode作为studentList的尾节点插入。
      10.   

        如果需要,here是扰码代码。