想测一下自己c语言学习水平的朋友可以做一下这个项目试试,能做出来说明c语言已经入门了

 

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

typedef struct Node
{
    char data[20];          //指名字
    struct Node *next;
}Node;

//把每一个文件夹看成一个头结点,存放在指针数组里
int v = 0;                   //定义全局变量v便于创建文件夹
Node *a[100] = {NULL};       //定义一个指针数组指向各个文件夹

void caidan1()      //输出菜单
{
    printf("            选择式菜单\n");
    printf("+====================================+\n");
    printf("+                                    +\n");
    printf("+        1:建立文件夹               +\n");
    printf("+                                    +\n");
    printf("+        2:查看文件夹               +\n");
    printf("+                                    +\n");
    printf("+        3:删除文件夹               +\n");
    printf("+                                    +\n");
    printf("+        4:对文件操作               +\n");
    printf("+                                    +\n");
    printf("+        0:退出程序                 +\n");
    printf("+                                    +\n");
    printf("+====================================+\n");
}

void caidan2()      //输出对文件操作菜单
{
    printf("+====================================+\n");
    printf("+                                    +\n");
    printf("+         1:创建文件                +\n");
    printf("+                                    +\n");
    printf("+         2:删除文件                +\n");
    printf("+                                    +\n");
    printf("+         3:显示某文件夹中的文件    +\n");
    printf("+                                    +\n");
    printf("+         4:对文件内容操作          +\n");
    printf("+                                    +\n");
    printf("+         0:返回上层操作            +\n");
    printf("+                                    +\n");
    printf("+====================================+\n");
}

void caidan3()
{
    printf("===============================================================\n");
    printf(" 1-读取代码信息  2-增加一行代码  3-删除一行代码  4-修改一行代码\n");
    printf(" 5-按代码查找    6-按标号查      0-返回上层操作\n");
    printf("===============================================================\n");
}

int search_wenjianjia(char temp1[])        //根据文件夹名称搜索文件夹
{
    int i;                     //寻找所在的文件夹,即头结点
    for (i = 0; i < v; i++)
    {
        if (a[i] != NULL && strcmp(a[i]->data, temp1) == 0)
            return i;       //搜索成功返回文件夹的位置
    }
    if (i == v)
    {
        return -1;   //搜索失败返回-1
    }
}

Node *search_wenjian(int i, char temp2[])    //根据文件夹位置和文件名称搜索文件
{
    Node *q = a[i];
    while (q->next != NULL)
    {
        if (strcmp(q->next->data, temp2) == 0)
            return q;                           //文件存在返回上一结点
        else
            q = q->next;
    }
    return NULL;                       //文件不存在返回NULL

}

void create_folio()   //建立文件夹
{
    printf("请输入你要建立的文件夹的名称:");
    Node *head  = (Node*)malloc(sizeof(Node));
    gets(head->data);
    if (search_wenjianjia(head->data) != -1)    //判断是否已经存在同名文件夹
    {
        printf("此文件夹已存在\n");
        return;
    }
    a[v] = head;
    a[v]->next = NULL;
    v++;
}

void look_folio()     //查看文件夹
{
    printf("文件夹如下所示:\n");
    int i, s = 1;           //s用来判断是否有文件夹
    for (i = 0; i < v; i++)
    {
            if (a[i]->data != NULL)
            {
                printf("%s  ",a[i]->data);
                s = 0;
            }
    }
    if ( s == 1)
        printf("无文件夹\n");
    printf("\n");
}

void delete_folio()     //删除文件夹
{
    printf("请输入你要删除的文件夹名称:");
    char temp1[20];
    gets(temp1);
    int i = search_wenjianjia(temp1);   //搜索文件夹位置
    if (i == -1)
        printf("此文件夹不存在\n");
    else
    {
        free(a[i]);
        a[i] = NULL;
    }
}

void create_file()         //创建文件
{
    char  ch, temp1[20], temp2[20];  // temp1为文件夹名字,temp2为文件名字。
    printf("请输入你要创建的文件所在文件夹的名字:");
    gets(temp1);

    int i = search_wenjianjia(temp1);       //判断输入的文件夹是否存在
    if (i == -1)
    {
        printf("输入的文件夹不存在\n");
        return;
    }

    printf("请输入你要创建的文件的名字:");
    gets(temp2);

    if (search_wenjian(i, temp2) != NULL)     //判断输入的文件名是否已经存在
    {
        printf("输入的文件名已存在\n");
        return;
    }

    FILE *t;
    if ((t = fopen(temp2, "w")) == NULL)    //打开输出文件并使t指向此文件
    {
        printf("无法打开此文件\n");
        return ;
    }

    printf("请输入文件内容(以$结束)\n");
    ch = getchar();
    while (ch != '$')
    {
        fputc(ch,t);
        ch = getchar();
    }

    Node *p = (Node *)malloc(sizeof(Node));
    Node *q;
    q = a[i];
    strcpy(p->data, temp2);     //传递文件名字
    p->next = NULL;
    while (q->next != NULL)  //把该文件放在链表的后面
    {
        q = q->next;
    }
    q->next = p;
    fclose(t);          //关闭文件
}

void delete_file()          //删除文件
{
    char temp1[20], temp2[20];      // 分别存放文件夹名和文件名
    printf("请输入你要删除的文件所在文件夹的名字:");
    gets(temp1);

    int i = search_wenjianjia(temp1);   //查找文件夹位置并判断文件夹是否存在
    if (i == -1)
    {
        printf("输入的文件夹不存在\n");
        return;
    }

    printf("请输入你要删除的文件的名字:");
    gets(temp2);

    Node *p = search_wenjian(i, temp2);        //搜索文件位置同时判断要删除的文件是否存在
    if(p == NULL)
    {
        printf("输入的文件名不存在,无法删除\n");
        return;
    }

    Node *q;
    q = p->next;
    p->next = p->next->next;
    if (remove(q->data) == 0)      //判断是否删除成功
        printf("删除成功\n");
    else
        printf("删除失败\n");
    free(q);
    q = NULL;
}

void show_file()         //显示某文件夹中的文件
{
    char temp1[20];
    printf("请输入你要显示的文件夹的名字:");
    gets(temp1);

    int i = search_wenjianjia(temp1);       //搜索并判断文件夹是否存在
    if (i == -1)
    {
        printf("输入的文件夹不存在\n");
        return;
    }

    Node *p = a[i];
    if (p->next == NULL)        //判断该文件夹是否为空
    {
        printf("该文件夹下不存在文件\n");
        return;
    }

    printf("该文件夹下的文件分别为:\n");   //输出该文件夹下所有文件
    while (p->next != NULL)
    {
        printf("%s  ",p->next->data);
        p = p->next;
    }
    printf("\n");
}

void read_file()    //读取代码信息,把一个文件的信息输出出来
{
    char temp1[20], temp2[20];
    printf("请输入你要读取文件所在的文件夹名:");
    gets(temp1);

    int i = search_wenjianjia(temp1);       //搜索并判断文件夹是否存在
    if (i == -1)
    {
        printf("输入的文件夹不存在\n");
        return;
    }

    printf("请输入你要读取的文件名:");
    gets(temp2);

    Node *p = search_wenjian(i, temp2);
    if (p == NULL)     //判断要读取的文件是否存在
    {
        printf("要读取的文件不存在\n");
        return;
    }

    char ch;        //读取文件
    FILE *fp;
    if((fp=fopen(p->next->data,"r"))==NULL)
    {
        printf("file cannot be opened\n");
        return;
    }
    while((ch = fgetc(fp)) != EOF)
        printf("%c", ch);
    fclose(fp);
}

void copy_file(char temp1[], char temp2[])            //把一个文件的东西复制到另一个文件中
{
    FILE *in, *out;
    char ch;
    if ((in = fopen(temp1,"r")) == NULL)
    {
        printf("无法打开此文件\n");
        return;
    }
    if ((out = fopen(temp2,"w")) == NULL)
    {
        printf("无法打开此文件\n");
        return;
    }
    while (!feof(in))         //如果未遇到输入文件的结束标志
    {
        ch=fgetc(in);         //从输入文件中读入一个字符,暂时放在变量ch中
        fputc(ch,out);        //将ch写到输出文件中
    }
    fclose(in);
    fclose(out);
}

int judge_hanghao(char temp[], int x)        //按行操作时判断输入的行号是否正确
{
    FILE *fp;
    if ((fp = fopen(temp, "r")) == NULL)
    {
        printf("无法打开此文件\n");
        return;
    }
    char buf[1000];
    int linecnt = 0;                   //用来记录行号
    while (fgets(buf, 1000, fp)) // fgets循环读取,直到文件最后,才会返回NULL
        linecnt++; // 累计行数
    fclose(fp);
    if (x > linecnt)
        return 0;
    return 1;
}

void add_a_line_code()        //增加一行代码
{
    char temp1[20], temp2[20];     // 分别为文件夹名称  文件名称
    printf("请输入你要操作的文件所在的文件夹名称:");
    gets(temp1);

    int i = search_wenjianjia(temp1);       //搜索并判断文件夹是否存在
    if (i == -1)
    {
        printf("输入的文件夹不存在\n");
        return;
    }

    printf("请输入你要操作的文件名:");
    gets(temp2);

    Node *p = search_wenjian(i, temp2);     //p为文件的上一结点
    if (p == NULL)        //判断要读取的文件是否存在
    {
        printf("要读取的文件不存在\n");
        return;
    }

    int x;              //  表示在第几行增加代码
    printf("你要在第几行增加代码:");
    scanf("%d", &x);
    getchar();

    if (judge_hanghao(p->next->data, x - 1) == 0)   //判断输入的行号是否正确
    {
        printf("输入的行号错误\n");
        return;
    }

    char temp3[100];    //存放要增加的代码
    printf("请输入你要增加的一行代码:");
    gets(temp3);

    FILE *fp1, *fp2;                //把一个文件的东西复制到另一个文件中
    copy_file(p->next->data, "temp_file");

    if((fp1=fopen(p->next->data,"w"))==NULL)
    {
        printf("file cannot be opened\n");
        return;
    }
    if((fp2=fopen("temp_file","r"))==NULL)
    {
        printf("file cannot be opened\n");
        return;
    }

    char str[256] = {0};
    int t = 0;          //用来计算行号
    while(t < x - 1)        //复制x行前面的部分
    {
        fgets(str, 256, fp2);
        fputs(str, fp1);
        t++;
    }

    fputs(temp3, fp1);      //输入增加的一行
    fputs("\n", fp1);

    while (fgets(str, 256, fp2) != NULL)      //复制剩下的部分
    {
        fputs(str, fp1);
    }
    fclose(fp1);
    fclose(fp2);
    remove("temp_file");
}

void delete_a_line_code()      //删除一行代码
{
    char temp1[20], temp2[20];     // 分别为文件夹名称  文件名称
    printf("请输入你要操作的文件所在的文件夹名称:");
    gets(temp1);

    int i = search_wenjianjia(temp1);       //搜索并判断文件夹是否存在
    if (i == -1)
    {
        printf("输入的文件夹不存在\n");
        return;
    }

    printf("请输入你要操作的文件名:");
    gets(temp2);

    Node *p = search_wenjian(i, temp2);     //p为文件的上一结点
    if (p == NULL)        //判断要读取的文件是否存在
    {
        printf("要读取的文件不存在\n");
        return;
    }

    int x;              //  表示在第几行删除代码
    printf("你要在第几行删除代码:");
    scanf("%d", &x);
    getchar();

    if (judge_hanghao(p->next->data, x) == 0)   //判断输入的行号是否正确
    {
        printf("输入的行号错误\n");
        return;
    }

    FILE *fp1, *fp2;                //把一个文件的东西复制到另一个文件中
    copy_file(p->next->data, "temp_file");

    if((fp1=fopen(p->next->data,"w"))==NULL)
    {
        printf("file cannot be opened\n");
        return;
    }
    if((fp2=fopen("temp_file","r"))==NULL)
    {
        printf("file cannot be opened\n");
        return;
    }

    char str[256] = {0};
    int t = 0;          //用来计算行号
    while(t < x - 1)        //复制x行前面的部分
    {
        fgets(str, 256, fp2);
        fputs(str, fp1);
        t++;
    }

    fgets(str, 256, fp2);       //取出要删除的一行

    while (fgets(str, 256, fp2) != NULL)      //复制剩下的部分
    {
        fputs(str, fp1);
    }
    fclose(fp1);
    fclose(fp2);
    remove("temp_file");
}

void change_a_line_code()   //修改一行代码
{
    char temp1[20], temp2[20];     // 分别为文件夹名称  文件名称
    printf("请输入你要操作的文件所在的文件夹名称:");
    gets(temp1);

    int i = search_wenjianjia(temp1);       //搜索并判断文件夹是否存在
    if (i == -1)
    {
        printf("输入的文件夹不存在\n");
        return;
    }

    printf("请输入你要操作的文件名:");
    gets(temp2);

    Node *p = search_wenjian(i, temp2);     //p为文件的上一结点
    if (p == NULL)        //判断要读取的文件是否存在
    {
        printf("要读取的文件不存在\n");
        return;
    }

    int x;              //  表示在第几行修改代码
    printf("你要在第几行修改代码:");
    scanf("%d", &x);
    getchar();

    if (judge_hanghao(p->next->data, x) == 0)   //判断输入的行号是否正确
    {
        printf("输入的行号错误\n");
        return;
    }

    char temp3[100];    //存放要修改的代码
    printf("请输入你想修改成的一行代码:");
    gets(temp3);

    FILE *fp1, *fp2;                //把一个文件的东西复制到另一个文件中
    copy_file(p->next->data, "temp_file");

    if((fp1=fopen(p->next->data,"w"))==NULL)
    {
        printf("file cannot be opened\n");
        return;
    }
    if((fp2=fopen("temp_file","r"))==NULL)
    {
        printf("file cannot be opened\n");
        return;
    }

    char str[256] = {0};
    int t = 0;          //用来计算行号
    while(t < x - 1)        //复制x行前面的部分
    {
        fgets(str, 256, fp2);
        fputs(str, fp1);
        t++;
    }

    fputs(temp3, fp1);      //输入修改的一行
    fputs("\n", fp1);

    fgets(str, 256, fp2);       //取出原来的这一行

    while (fgets(str, 256, fp2) != NULL)      //复制剩下的部分
    {
        fputs(str, fp1);
    }
    fclose(fp1);
    fclose(fp2);
    remove("temp_file");
}

void search_code()        //按代码查找
{
    char temp1[20], temp2[20];     // 分别为文件夹名称  文件名称
    printf("请输入你要操作的文件所在的文件夹名称:");
    gets(temp1);

    int i = search_wenjianjia(temp1);       //搜索并判断文件夹是否存在
    if (i == -1)
    {
        printf("输入的文件夹不存在\n");
        return;
    }

    printf("请输入你要操作的文件名:");
    gets(temp2);

    Node *p = search_wenjian(i, temp2);     //p为文件的上一结点
    if (p == NULL)        //判断要读取的文件是否存在
    {
        printf("要读取的文件不存在\n");
        return;
    }

    char temp3[100];    //存放要查找的代码
    printf("请输入你要查找的一行代码:");
    gets(temp3);

    FILE *fp1;
    if((fp1=fopen(p->next->data,"r"))==NULL)
    {
        printf("file cannot be opened\n");
        return;
    }

    int j = 0,len1, len2;
    len1 = strlen(temp3);       //  len1为要查找的代码的长度
    char str[256] = {0};
    printf("查找到的结果为:\n");
    int s = 0, t = 1;           //s用来判断是否查找到该代码,t用来计录行数
    while(fgets(str, 256, fp1))         //依次取出一行搜索
    {
        i = 0; j = 0;
        len2 = strlen(str);         //len2为取出的一行代码的长度
        for (; i < len2; )
        {
            if (str[i] == temp3[j])
            {
                i++;
                j++;
            }
            if (j == len1)
            {
                s = 1;
                printf("第%d行:%s", t, str);
                break;
            }
            if (str[i] != temp3[j])
            {
                i++;
                j = 0;
            }
        }
        t++;
    }
    if (s == 0)
        printf("未查找到该代码\n");
    fclose(fp1);
}

void search_biaohao()      //按标号查找
{
    char temp1[20], temp2[20];     // 分别为文件夹名称  文件名称
    printf("请输入你要操作的文件所在的文件夹名称:");
    gets(temp1);

    int i = search_wenjianjia(temp1);       //搜索并判断文件夹是否存在
    if (i == -1)
    {
        printf("输入的文件夹不存在\n");
        return;
    }

    printf("请输入你要操作的文件名:");
    gets(temp2);

    Node *p = search_wenjian(i, temp2);     //p为文件的上一结点
    if (p == NULL)        //判断要读取的文件是否存在
    {
        printf("要读取的文件不存在\n");
        return;
    }

    printf("请输入你要查找的标号:");      //即查找第几行
    int x;
    scanf("%d", &x);
    getchar();

    FILE *fp1;
    if((fp1=fopen(p->next->data,"r"))==NULL)
    {
        printf("file cannot be opened\n");
        return;
    }

    int t = 1, s = 0;           //s用来判断是否查找到该代码,t用来计录行数
    char str[256] = {0};
    printf("查找结果为:\n");
    while (fgets(str, 256, fp1) != NULL)        //按标号查找
    {
        if (x == t)
        {
            s = 1;
            printf("第%d行:%s", t, str);
            break;
        }
        t++;
    }
    if (s == 0)
        printf("输入的标号错误,未查到结果\n");
    fclose(fp1);
}

void neirongcaozuo()     //对文件内容操作选择
{
    while (1)
    {
        printf("\n请输入你要进行的操作:");
        int ch;
        scanf("%d",&ch);
        getchar();
        switch (ch)
        {
            case 1:         //读取代码信息
            {
                read_file();
                break;
            }
            case 2:         //增加一行代码
            {
                add_a_line_code();
                break;
            }
            case 3:         //删除一行代码
            {
                delete_a_line_code();
                break;
            }
            case 4:         //修改一行代码
            {
                change_a_line_code();
                break;
            }
            case 5:         //按代码查找
            {
                search_code();
                break;
            }
            case 6:         //按标号查找
            {
                search_biaohao();
                break;
            }
            case 0:         //返回上层操作
            {
                printf("\n");
                caidan2();
                return;
            }
            default:
            {
                printf("输入有误,请重新输入\n");
                break;
            }
        }
    }
}

int wenjiancaozuo()      //对文件操作选择
{
    while (1)
    {
        printf("\n请输入你要进行的操作:");
        int ch;
        scanf("%d",&ch);
        getchar();
        switch (ch)
        {
            case 1:     //创建文件
            {
                create_file();
                break;
            }
            case 2:     //删除文件
            {
                delete_file();
                break;
            }
            case 3:     //显示某文件夹中的文件
            {
                show_file();
                break;
            }
            case 4:     //对文件内容进行操作
            {
                caidan3();
                neirongcaozuo();
                break;
            }
            case 0:     //返回上层操作
            {
                printf("\n");
                caidan1();
                return ;
            }
            default:
            {
                printf("输入有误,请重新输入\n");
                break;
            }
        }
    }
}

void wenjianjiacaozuo()         //对文件夹操作
{
    caidan1();   //输出选择菜单
    int ch;
    while (1)
    {
        printf("\n请输入你要进行的操作:");
        scanf("%d",&ch);
        getchar();
        switch (ch)
        {
            case 1:             //建立文件夹
            {
                create_folio();
                break;
            }
            case 2:             //查看文件夹
            {
                look_folio();
                break;
            }
            case 3:             //删除文件夹
            {
                delete_folio();
                break;
            }
            case 4:             //对文件操作
            {
                caidan2();
                wenjiancaozuo();
                break;
            }
            case 0:             //退出程序
                return;
            default:
            {
                printf("输入有误,请重新输入\n");
                break;
            }
        }
    }
}

int main()
{
    wenjianjiacaozuo();
    return 0;
}

一个考验c语言和数据结构功底的小项目的更多相关文章

  1. C语言的一小步—————— 一些小项目及解析

    ——-------- 仅以此献给东半球第二优秀的C语言老师,黑锤李某鸽,希望总有那么一天我们的知识可以像他的丰臀一样渊博! bug跟蚊子的相似之处: 1.不知道藏在哪里. 2.不知道有多少. 3.总是 ...

  2. ios学习笔记图片+图片解释(c语言 oc语言 ios控件 ios小项目 ios小功能 swift都有而且笔记完整喔)

    下面是目录其中ios文件夹包括了大部分ios控件的介绍和演示,swift的时完整版,可以学习完swift(这个看的是swift刚出来一周的视频截图,可能有点赶,但是完整),c语言和oc语言的也可以完整 ...

  3. 用c语言实现的几个小项目

    1.参考:Linux系统编程 2.参考:制作简单计算器 3.参考:制作2048小游戏 4.参考:五子棋实现

  4. 20145205 java语言实现数据结构实验一

    数据结构实验要求 综合类实验设计3 已知有一组数据a1a2a3a4--anb1b2b3b4--bm,其中ai均大于bj,但是a1到an和b1到bm不是有序的,试设计两到三个算法完成数据排序,且把bj数 ...

  5. 大数据技术之_16_Scala学习_13_Scala语言的数据结构和算法_Scala学习之旅收官之作

    第十九章 Scala语言的数据结构和算法19.1 数据结构(算法)的介绍19.2 看几个实际编程中遇到的问题19.2.1 一个五子棋程序19.2.2 约瑟夫问题(丢手帕问题)19.2.3 其它常见算法 ...

  6. 小项目特供 贪吃蛇游戏(基于C语言)

    C语言写贪吃蛇本来是打算去年暑假写的,结果因为ACM集训给耽搁了,因此借寒假的两天功夫写了这个贪吃蛇小项目,顺带把C语言重温了一次. 是发表博客的前一天开始写的,一共写了三个版本,第一天写了第一版,第 ...

  7. 约瑟夫环(N个人围桌,C语言,数据结构)

    约瑟夫环问题(C语言.数据结构版) 一.问题描述 N个人围城一桌(首位相连),约定从1报数,报到数为k的人出局,然后下一位又从1开始报,以此类推.最后留下的人获胜.(有很多类似问题,如猴子选代王等等, ...

  8. Go语言【数据结构】指针

    指针 本章围绕字符串.数字.数组.切片.map.channel.结构体与指针赋值及函数传参的应用剖析 字符串 字符串本身也是StringHeader的结构体,包含Data指针与字符串长度,如下 typ ...

  9. C语言版数据结构算法

    C语言版数据结构算法 C语言数据结构具体算法 https://pan.baidu.com/s/19oLoEVqV1I4UxW7D7SlwnQ C语言数据结构演示软件 https://pan.baidu ...

随机推荐

  1. Spring是什么、spring容器、Spring三大核心思想DI(依赖注入)、IOC(控制反转)、AOP(面向切面编程)

    1.Spring (1)Spring是什么? 是一个轻量级的.用来简化企业级应用开发的开发框架. 注: a.简化开发: Spring对常用的api做了简化,比如,使用Spring jdbc来访问数据库 ...

  2. Java volatile关键字解惑

    volatile特性 内存可见性:通俗来说就是,线程A对一个volatile变量的修改,对于其它线程来说是可见的,即线程每次获取volatile变量的值都是最新的. volatile的使用场景 通过关 ...

  3. Retrofit+RxJava(2)-基本使用

    首先是抽象的基类 public abstract class BaseApi { public static final String API_SERVER = "服务器地址" p ...

  4. Application Context的设计

    基本上每一个应用程序都会有一个自己的Application,并让它继承自系统的Application类,然后在自己的Application类中去封装一些通用的操作.其实这并不是Google所推荐的一种 ...

  5. Android自定义Button按钮显示样式

    关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法. 首先android的selector是在 ...

  6. 的确,Java存在缺陷。但是……

    [编者按]本文作者为资深码农 Tim Spann,主要讲述 Java 让人无法抗拒的众多优点以及一些些缺陷.本文系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文. 早在90年代中期,笔者 ...

  7. C#代码实现在控制台输入密码显示星号

    在控制台输入的内容C#默认按照字符串进行处理,如果直接让用户一次输入完毕就很难实现 显示星号的功能.但是如果让用户一次只能输入一个字符就,在将用户输入的字符替换为星号就可以实现了! 首先,C#中能让用 ...

  8. Azure 镜像市场发布商指南

    Azure 镜像市场发布商指南 本指南提供独立软件供应商产品上架到 Azure 镜像市场(以下简称 Azure 镜像市场)需要遵循的全流程. 文档适用范围 本指南适用于希望通过由世纪互联运营的Micr ...

  9. Python学习---Django关于POST的请求解析源码分析

    当有请求到来之后,先判断请求头content_type是不是[application/x-www-form-urlencoded] --> 如果是则将请求数据赋值给request.body然后解 ...

  10. Coursera-AndrewNg(吴恩达)机器学习笔记——第二周编程作业(线性回归)

    一.准备工作 从网站上将编程作业要求下载解压后,在Octave中使用cd命令将搜索目录移动到编程作业所在目录,然后使用ls命令检查是否移动正确.如: 提交作业:提交时候需要使用自己的登录邮箱和提交令牌 ...