好多函数没学过 思路有些不清楚

因为好多函数没学过 导致有些看不懂 不知道这个思路是啥 有点吃力 好痛苦(源代码来自@Junieson

img

这是都看不懂还是

借书函数 js()的功能 ,就是实现借书的流程,第一步先打开 library.txt 图书馆库存文件,如果文件未有,则表示图书馆无库存,结束借书流程退出。如果有库存,先将图书信息建立一个链表,然后根据输入需借阅书名,在链表中查找,if(!strcmp(p->nam, zname))判断找到此书,将该书库存数减一,把库存量变化后的链表重新存入文件library.txt保存。再在读者文件 reader.txt里存入该读者的借书信息,保存。以上,就完成了一个借书的流程。
这里用到几个函数,fopen() 是文件打开函数,fclose()是文件关闭函数,fprintf()是文件写入函数,fscanf()是文件读取函数。strcmp(),strcpy()是字符串比较和拷贝函数。这些函数可以去百度下,了解函数原型,函数用法,函数所在头文件等。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7473881
  • 这篇博客你也可以参考下:从键盘上输入若干个学生的成绩;当成绩小于0时结束输入;计算平均成绩;并输出不及格成绩和人数;
  • 除此之外, 这篇博客: 【逆向】栈溢出漏洞学习过程(一)通过字符串验证的简单程序分析中的 问题排查 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 今天早上起来发现又有一个拼写错误。我在password里面写成了33D8应该是33DB!

    修改后:

    又检查了一遍地址,还是感觉没问题 啊 

     

     又去回过头看了是不是因为自己不是debug编译?

    如果要改变当前工程的版本配置,可以在工具栏上点右键,选中“build”选项(不是“mini build”),然后在该工具栏上有一个选择编译版本的下拉框,可以选在“win32 Debug”或“win32 Release”。

     在VC中F10出现这个:网上查了查说好像并没有什么实际影响:

    https://www.52pojie.cn/thread-956567-1-1.html

    https://bbs.csdn.net/topics/390874574

    好像是user32.dll的问题:

     我把程序拖进Dependency Walker中,发现没有找到user32.dll

    查看源程序:

    发现是user32.dll的问题?

     

     

    查阅资料:

    https://www.cnblogs.com/Braveliu/p/9342633.html

    https://bbs.csdn.net/topics/391035554?list=3425870




     尝试了一圈好像没什么用,我直接在代码里写了个MessageBoxA()函数:

    发现是可以调用成功的,我也看了,不存在64位程序引用user32.dll失败的问题,上面的连接中有一个办法是把user32.dll拷贝到如下图的文件夹下面,但是我已经找到了,而且引用的也是正确的。

    加了这个函数之后生成的exe我再拖进dependency看看:

    额,发现出现了,而且地址还是上面的地址,看来这个地址是固定的,应该没问题。而且加入了windows.h头文件应该就是相当于可以使用user32.dll的吧,因为可以使用这个函数。

     ==??

  • 您还可以看一下 CSDN讲师老师的 深度学习与强化学习技术沙龙 暨《深度学习模型及应用详解》新书发布会课程中的 深度学习在大规模在线广告系统中的应用小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    针对函数学习的困难,可以从以下几个方面进行解决和指导:

    1.理解函数的基本概念和语法

    函数是一个可重复利用的代码段,它有自己的名称和参数,可以接受值并返回值。函数的定义分为函数头和函数体,函数头包括函数名、返回值类型和参数列表,函数体包括具体的实现代码。我们可以通过函数调用来执行某个函数,并将其结果返回到调用函数的位置。

    例如,下面是一个简单的函数定义和调用的例子:

    int add(int a, int b)
    {
        return a + b;
    }
    
    int main()
    {
        int result = add(1, 2);
        printf("result: %d\n", result);
        return 0;
    }
    

    2.掌握常用的函数参数传递方式

    函数参数传递方式包括值传递、地址传递和指针传递。值传递是将实参的值复制给形参,形参对其进行操作不会影响实参;地址传递是将实参的地址传递给形参,形参对其进行操作会影响实参;指针传递是将指向实参地址的指针传递给形参,形参对其进行操作会影响实参。

    例如,下面是一个简单的地址传递例子:

    void swap(int *a, int *b)
    {
        int tmp = *a;
        *a = *b;
        *b = tmp;
    }
    
    int main()
    {
        int x = 10, y = 20;
        swap(&x, &y);
        printf("x: %d, y: %d\n", x, y);
        return 0;
    }
    

    3.学习常用的函数库和函数调试技巧

    C语言标准库中有许多常用的函数库,包括字符串操作、数组操作、数学计算等等。学习这些函数库可以提高函数的应用能力。同时,函数的调试是程序开发中必不可少的一部分,可以通过调试器和日志打印等方式进行调试。

    例如,下面是一个使用标准库函数qsort进行排序的例子:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int compare(const void *a, const void *b)
    {
        return strcmp(*(char **)a, *(char **)b);
    }
    
    int main()
    {
        char *words[] = {"purple", "blue", "yellow", "green", "red"};
        int num_words = sizeof(words) / sizeof(words[0]);
        qsort(words, num_words, sizeof(char *), compare);
        for (int i = 0; i < num_words; i++)
        {
            printf("%s ", words[i]);
        }
        printf("\n");
        return 0;
    }
    

    综上所述,针对函数学习的困难,可以通过以上几个方面进行解决和指导,让学习更加轻松和愉快。