Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将txt文件转换为邻接列表_C - Fatal编程技术网

C 将txt文件转换为邻接列表

C 将txt文件转换为邻接列表,c,C,这是我的txt文件,我想转换邻接列表 矩阵中的课程以数字命名,如下所示: S,John 2 MATH101 CSE100 K,Jack 2 BLAW203 MATH101 B,Brown 2 STAT253 MATH259 G,Mary 3 MATH259 HIST111 STAT253 如何读取和转换C语言中的邻接列表?谢谢。这是解析部分-现在使用结构创建一个列表,并检查是否已插入元素 0 - MATH101 1 - CSE100 2 - BLAW203 3 - STAT253

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

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

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

如何读取和转换C语言中的邻接列表?谢谢。

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

0 - MATH101 
1 - CSE100 
2 - BLAW203 
3 - STAT253 
4 - MATH259 
5 - HIST111 
#包括
#包括
#包括
int main()
{ 
FILE*in=fopen(“newfile”、“r”);
FILE*out=fopen(“newfile2.txt”,“w”);
尺寸=1024;
char*lineBuf=malloc(1024*sizeof(char));
char*tmpVal;
char*maxVal;
int循环=0;
int=0;
内线=0;
while(getline(&lineBuf,&snby,in)!=-1)
{ 
如果(gar==0)
{
fprintf(输出,“%d-”,行);
line++;
gar++;
}
其他的
{
fprintf(输出,“\n%d-”,行);
line++;
}
line++;
整数分=0;
tmpVal=lineBuf;
while(马克!=2)
{
如果(*tmpVal='')标记++;
tmpVal++;
}
而(*tmpVal!='\n')
{
如果(*tmpVal=='')
{
fprintf(输出,“\n%d-”,行);
line++;
}
其他的
{
fprintf(out,“%c”,*tmpVal);
}
tmpVal++;
}
}
免费(lineBuf);
fclose(out);
fclose(in);
返回0;
}

这是一种方法:

  • 打开输入文件。在读取模式下
  • 输入循环以读取输入文件中的所有行
  • 从文件中读取第一行
  • 分配一个新的学生列表节点
  • 将lineBuf字段中的学生姓名解析为newStudentNode->name
  • 从lineBuf解析课程数
  • 输入循环以解析lineBuf中的每个课程名称
  • 解析课程名称
  • 将课程名称转换为课程编号
  • 分配新课程节点
  • 插入newCourseNode作为newStudentNode的courseList的尾部节点
  • 插入newStudentNode作为studentList的尾部节点

  • 如果需要,是扰流板代码。

    您试过了吗?我不知道。这是我项目的一部分。如果我能完成这部分,我将完成项目。我们不是来给你做作业的,你必须带点东西来。从非常高的层次来看待这个问题(不是从编程的角度,只是作为一个概念)。看看你是否能从高级到代码。
    #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;
    }