因为好多函数没学过 导致有些看不懂 不知道这个思路是啥 有点吃力 好痛苦(源代码来自@Junieson )
这是都看不懂还是
借书函数 js()的功能 ,就是实现借书的流程,第一步先打开 library.txt 图书馆库存文件,如果文件未有,则表示图书馆无库存,结束借书流程退出。如果有库存,先将图书信息建立一个链表,然后根据输入需借阅书名,在链表中查找,if(!strcmp(p->nam, zname))判断找到此书,将该书库存数减一,把库存量变化后的链表重新存入文件library.txt保存。再在读者文件 reader.txt里存入该读者的借书信息,保存。以上,就完成了一个借书的流程。
这里用到几个函数,fopen() 是文件打开函数,fclose()是文件关闭函数,fprintf()是文件写入函数,fscanf()是文件读取函数。strcmp(),strcpy()是字符串比较和拷贝函数。这些函数可以去百度下,了解函数原型,函数用法,函数所在头文件等。
今天早上起来发现又有一个拼写错误。我在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的吧,因为可以使用这个函数。
==??
针对函数学习的困难,可以从以下几个方面进行解决和指导:
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;
}
综上所述,针对函数学习的困难,可以通过以上几个方面进行解决和指导,让学习更加轻松和愉快。