
C语言学习
LEEE@FPGA
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c语言指针函数
总之,C语言的指针函数是一种强大的工具,可以让你在程序的不同部分之间传递和操作数据。在这个例子中,create_array是一个指针函数,它返回一个指向整数数组的指针。在C语言中,指针函数(Pointer Function)是一种特殊的函数,它的返回值类型是一个指针类型。这意味着这种函数不直接返回一个数据值,而是返回一个指向某个数据值的指针。注意事项:由于指针函数可能返回一个指针到某个地址,所以必须确保你返回的指针是有效的。返回值:指针函数可以返回任何类型的指针,包括数组的指针、结构体的指针等。原创 2024-10-17 17:46:18 · 355 阅读 · 0 评论 -
c 语言 sprintf
需要注意的是,在使用sprintf时必须确保目标字符数组有足够的空间来存储格式化后的字符串,包括空字符(‘\0’)。为了避免这种情况,可以使用动态内存分配来分配足够的空间,或者使用snprintf(当你在处理包含多个占位符的字符串时,并且担心缓冲区溢出)作为替代的函数来检查分配的空间是否足够。在C语言中,sprintf是一个非常常用的函数,它用于将格式化的数据写入字符串中。sprintf函数会将格式化的数据写入到str指向的字符串中,并返回写入的字符数(不包括终止的空字符)。原创 2024-10-17 17:40:10 · 510 阅读 · 0 评论 -
c语言 图片.bmp读写示例
BMP(Bitmap)文件格式是一种简单的位图图像格式,其数据结构分为几个主要部分:文件头、信息头、调色板(可选)和像素数据。对于某些格式(如1位或4位色),可能会包含调色板。调色板由颜色索引组成,使用RGB格式(每个颜色占用4个字节,包含蓝、绿、红、保留字节)。BMP文件分为文件头、信息头和像素数据。根据 infoHeader.biWidth 和 infoHeader.biHeight 读取像素数据。BMP文件通常以蓝色、绿色、红色(BGR)顺序存储像素。确保检查文件类型以确认它是一个合法的BMP文件。原创 2024-08-13 17:07:40 · 657 阅读 · 0 评论 -
c语言音频.wav读写示例
如果和 MS 一 DOS 文件系统作比较,"RIFF"chunk 就好比是一台硬盘的根目录,其格式辨别码便是此硬盘的逻辑代码(C:或 D:),而"L1ST"chunk 即为其下的子目录,其他的 chunk 则为一般的文件。RIFF 块包含两个子块,这两个子块的 ID 分别是"fmt"和"data",其中"fmt"子块由结构 PCMWAVEFORMAT 所组成,其子块的大小就是 sizeofof(PCMWAVEFORMAT),数据组成就是 PCMWAVEFORMAT 结构中的数据。读取和写入WAV文件示例。原创 2024-08-13 16:42:11 · 1082 阅读 · 0 评论 -
c语言学习
这段代码通常在嵌入式系统中使用,0x08100000 可能指向特定的内存区域,如 Flash 存储器或外设寄存器。这行 C 语言代码的作用是从指定的内存地址 0x08FFF814 读取一个 16 位无符号整数,并将其赋值给 ts_cal1 变量。通常 u8 是定义为 uint8_t 的别名,表示无符号的 8 位整数。通常,这种方式在嵌入式编程中很常见,用于访问硬件寄存器或其他特定的内存区域。volatile: 声明这个指针所指向的内存地址的值可能会在任何时候被外部因素改变,避免编译器进行优化。原创 2024-08-05 17:40:29 · 382 阅读 · 0 评论 -
c语言学习 volatile __attribute__ const goto
这很重要在涉及DMA(直接内存访问)操作时,一些系统需要数据的特定对齐以进行高效的访问或者满足特定的硬件需求。综上所述,这段代码定义了一个名为 DmaTxBuffer 的数组,该数组用于存储数据包的字节数据(假设是DMA传输相关的缓冲区),其大小由 MAX_PKT_LEN 定义,并且要求内存地址按照64字节对齐。在C语言中,volatile是一个类型修饰符,用于告诉编译器某个变量的值可能会被外部因素改变,从而避免编译器对该变量进行优化。适用于需要确保变量的最新状态被获取的场景,防止优化导致的数据不一致。原创 2024-07-30 09:53:28 · 484 阅读 · 0 评论 -
c语言动态分配内存
在 C 语言中,动态分配内存可以通过使用标准函数 malloc()、calloc()、realloc() 来实现。这些函数定义在 stdlib.h 头文件中。需要注意的是,在使用完动态分配的内存之后,需要使用 free() 函数来释放这部分内存,避免内存泄漏。原创 2024-07-04 17:31:27 · 275 阅读 · 0 评论 -
makefile文件编写(C)
这个Makefile定义了如何编译和链接你的程序。CC变量指定了编译器(这里是gcc),CFLAGS变量包含了编译器的标志,比如警告选项和调试信息,LDFLAGS变量用于链接时的选项。运行Makefile:在命令行中运行make命令,Makefile会根据其规则自动编译和链接你的程序。原创 2024-06-24 17:49:24 · 428 阅读 · 0 评论 -
Huffman算法压缩解压缩(C)
Huffman压缩算法是一种基于字符出现频率的编码算法,通过构建Huffman树,将出现频率高的字符用短编码表示,出现频率低的字符用长编码表示,从而实现对数据的压缩。以下是Huffman压缩算法的详细流程:统计字符频率:遍历待压缩的数据,统计每个字符出现的频率。构建优先队列:将每个字符及其频率作为一个结点放入优先队列(或最小堆)中,根据字符频率构建一个按频率大小排序的优先队列。原创 2024-06-21 10:35:28 · 1457 阅读 · 0 评论 -
C语言生成方波,锯齿波,三角波,正玄波。
【代码】C语言生成方波,锯齿波,三角波,正玄波。原创 2024-06-11 14:22:47 · 1296 阅读 · 0 评论 -
C语言浮点数据写出到.txt
C语言浮点数据写出到.txt。原创 2024-06-11 14:18:59 · 244 阅读 · 0 评论 -
Linux undefined reference to `sin‘问题解决
【代码】Linux undefined reference to `sin'问题解决。原创 2024-06-11 14:04:59 · 246 阅读 · 0 评论 -
C语言基础学习
在使用extern声明变量或函数时,对于函数来说,只需要声明其返回类型和参数类型,而不需要提供函数体。对于变量来说,只需要声明变量的类型,而不需要提供变量的值。这是因为extern关键字只是用来告诉编译器该变量或函数是在其他地方定义的,不需要在当前文件中提供其具体实现。在C语言中,关键字extern用于声明一个变量或函数是在其他文件或模块中定义的。总之,extern关键字的作用是告诉编译器某个变量或函数是在其他地方定义的,编译器不需要对其进行分配存储空间或生成其代码,而是在链接阶段找到该变量或函数的定义。原创 2024-03-16 15:04:40 · 288 阅读 · 0 评论 -
c语言 i++和++i什么区别?
对于变量i来说都会在原来基础上加1的,重点区别于式子本身的值;1、i++式子值为i原来的值,就是通俗说的“先赋值再加1”;2、而++i式子值为i变化后的值,也就是“先加1后赋值”;在for循环中,如果要表示递增,两种都可以。...原创 2022-01-22 14:49:42 · 9349 阅读 · 0 评论 -
C语言 fread()与fwrite()函数说明与示例
1 fwrite1) 描述C 库函数 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) 把 ptr 所指向的数组中的数据写入到给定流 stream 中。2)声明下面是 fwrite() 函数的声明。size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)3) 参数ptr – 这是指向要被写入的元素数组的指针。siz原创 2022-01-18 20:43:18 · 370 阅读 · 0 评论 -
main.c:(.text+0xc0): undefined reference to `pow‘ collect2: error: ld returned 1 exit status
问题:main.c:(.text+0xc0): undefined reference to `pow’ collect2: error: ld returned 1 exit statusgcc main.c -lm原创 2022-01-13 10:35:46 · 593 阅读 · 0 评论 -
c语言--随机数
在C语言中,一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数:int rand (void);种子在每次启动计算机时是随机的,但是一旦计算机启动以后它就不再变化了;也就是说,每次启动计算机以后,种子就是定值了,所以根据公式推算出来的结果(也就是生成的随机数)就是固定的。可以通过 srand() 函数来重新“播种”,这样种子就会发生改变。void srand (unsigned int seed);使用 <time.h> 头文件中的 time()原创 2021-09-07 17:40:10 · 509 阅读 · 0 评论 -
C语言如何读取txt文件里边的数据
项目需要处理txt文件里边的数据,数据来自verilog 算法仿真。这里举例数据如下:11.txtfscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器,而是磁盘文件。int fscanf ( FILE *fp, char * format, … );int fprintf ( FILE *fp, char * format, … );f原创 2021-09-01 17:25:40 · 17907 阅读 · 3 评论 -
/usr/bin/ld: cannot find -lz
编译过程中遇到如下错误:/usr/bin/ld: cannot find -lzcollect2: error: ld returned 1 exit status编译的时候出现"/usr/bin/ld: cannot find -lz"错误,需要安装zlib-dev这个包,在线安装命令为:sudo apt-get install zlib1g-dev...原创 2021-08-31 15:57:33 · 2551 阅读 · 0 评论 -
C语言读写文件
一:打开文件句柄//参数1:文件路径//参数2:文件打开模式函数执行成功返回文件流指针,错误返回NULL。FILE *fopen(const char *path, const char *mode);模式 操作 区别 文件要求r 读 从文件头开始 文件需存在r+ 读写 从文转载 2021-08-13 10:03:50 · 555 阅读 · 0 评论 -
C语言产生不同频率的sin
C代码:n是产生的点数fs采样率fre为频率#include <stdio.h>#include <math.h>#define PI 3.14159265int main(){ float t; float fs; float fre; float y; int n; n=256; fs =44100; fre=1000; t=1/fs*n; float step=0.0; step = 1/fs; for(fl原创 2021-08-12 19:03:00 · 578 阅读 · 0 评论