![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C程序设计语言
小飞将
一切过往,皆为序章
展开
-
fscanf_s()使用
对于fscanf_s()来说,只设置一个长度参数或者不指定长度参数,都可以通过,为每个数据都指定反而是错的,fscanf_s()不如fscanf()函数来的直接。测试文件data.txt。原创 2023-08-29 15:06:57 · 1300 阅读 · 0 评论 -
CMake的使用
【代码】CMake的使用。原创 2023-06-07 20:11:13 · 280 阅读 · 0 评论 -
C/C++打印宏或变量名称与值
【代码】C/C++打印宏或变量名称与值。原创 2022-11-12 11:49:32 · 1448 阅读 · 0 评论 -
打印UInt32整形数据中每个字节及拷贝特定字节的方法
核心在于将src地址转为uint8_t类型指针,以便进行字节级别访问。原创 2022-09-27 19:50:51 · 1364 阅读 · 0 评论 -
无法通过头文件中的宏定义或全局变量修改动态库中的参数
期望为用户提供的动态库,通过库的头文件定义的宏或者全局变量,修改动态库中执行逻辑时用到的参数,发现这条路不可行,一旦动态库已经生成,修改头文件中的宏定义或全局变量,不会修改动态库中的变量,这些变量仍然使用的生成动态库时定义的值。都已经确定,把这个头文件和dll提供给用户,用户修改了头文件中的宏或者全局变量定义,也不会生效,使用的值仍然是dll生成时所定义的。解决这个问题的方法是提供新的接口函数,用户调用这个函数以修改dll中的参数,和用传参的方式逻辑一样。一旦使用上述头文件生成了dll,...原创 2022-08-05 10:30:56 · 558 阅读 · 0 评论 -
如何使用开源FFTW库进行FFT和逆FFT运算
首先下载FFTW3库,在Windows平台上使用Developer Command Prompt工具生成静态库.lib文件。创建VC测试项目,将库中提供的libfftw3-3.dll和fftw3.h,以及生成的libfftw3-3.lib放在测试项目中,配置好include path和link path/item。// FFT_CPP_Test.cpp : This file contains the 'main' function. Program execution begins and end.原创 2022-04-11 17:03:25 · 2732 阅读 · 1 评论 -
Visual Studio项目中,相对路径的表示
在VS Project中,有时为了能够使用相对路径读取当前项目路径下的文件,可以使用相对路径,有两种方式表示:使用单个点.来表示当前project path。例如在test.vcxproj同级目录有存在一个test.txt文件,则程序中表达它路径的方式为:const char *filePath = "./test.txt";使用两个点..来表示project path的上级目录。例如test.vcxproj的上级目录存在一个test.txt文件,则程序中表达它路径的方式为:const char *f原创 2022-02-23 20:14:23 · 3713 阅读 · 0 评论 -
Visual Studio编译是提示:Unresolved external symbol _sprintf and _sscanf
这个问题的解决方法是:https://stackoverflow.com/questions/32418766/c-unresolved-external-symbol-sprintf-and-sscanf-in-visual-studio-2015在项目属性->链接器->输入->Additional Dependencies添加legacy_stdio_definitions.lib在使用这些函数的源文件中加入#pragma comment (lib, "legacy_stdio_转载 2021-12-10 17:02:01 · 518 阅读 · 0 评论 -
C语言记录执行时间
#include <stdio.h>#include <time.h>int main () { time_t start_t, end_t; double diff_t; printf("Starting of the program...\n"); time(&start_t); printf("Sleeping for 5 seconds...\n"); sleep(5); time(&end_t);转载 2021-12-07 18:56:19 · 1078 阅读 · 0 评论 -
在使用Visual Stduio创建一个动态库时,报出C2065 ‘identifier‘ : undeclared identifier错误
这个错误很奇怪,在创建一个console项目时,编译并不会报出C2065这个问题,编译时可以找到声明,但改成动态库项目后就会报C2065。这是由于动态库程序一定要把“pch.h”这个头文件放在include的第一行:#include "pch.h"#include <stdio.h>#include <stdlib.h>#include <string.h>如果将pch.h这个头文件include在其他头文件之后,就会出现找不到声明的问题。...原创 2021-12-04 17:14:54 · 1004 阅读 · 0 评论 -
C/C++获取计算机MAC地址
// CheckMacAddress.cpp : This file contains the 'main' function. Program execution begins and ends there.//#include <stdio.h>#include <Windows.h>#include <iphlpapi.h>#define IP_LOCALHOST 0x0100007F#define MAX_ADDR_LEN 18int main原创 2021-12-02 20:53:54 · 2941 阅读 · 1 评论 -
使用C语言读取IQ文件
#include <stdio.h>#include <stdlib.h>#include <string.h>int CountNewLine(FILE *f) { char c; int line = 0; while ((c = fgetc(f)) != EOF) { if (c == '\n') { ++line; } } return line;}int ReadIQDataF原创 2021-10-30 10:12:27 · 1039 阅读 · 0 评论 -
C语言 getline函数实现
int getline(char str[], int lim, FILE *f) { char c; int i; for (i = 0; i < lim - 1 && ( (c = fgetc(f)) != EOF && c != '\n'); ++i) { str[i] = c; } if (c == '\n') { str[i] = c; } str[++i] = '\0'; // 添加结束符原创 2021-10-29 16:19:50 · 1537 阅读 · 0 评论 -
使用fscanf来读取行交替的文本数据
假设有两种数据:IData和QData,它们在文件中以行交替重复出现:Line countIData1QData1IData2QData2...可以用如下程序读取文本中的数据:int main(){ const char *filePath = "C:\\IQ.txt"; FILE *f = fopen(filePath, "r"); // read only mode if (f == NULL) { printf("Open file failed\n原创 2021-10-20 20:02:48 · 376 阅读 · 0 评论 -
对结构体中数组的初始化问题
发现一个问题,当定义了一个结构体,结构体中含有数组,使用一个数组直接复制给结构体数组是错误。typedef struct _Snake { char direction; int snakeSize; int body[MAXSIZE * MAXSIZE];} Snake;int snakeBody[MAXSIZE * MAXSIZE] = { 0 };Snake sn;sn.body = snakeBody; // int *类型的值不能用于初始化int类型的实体面对这种原创 2021-10-16 16:25:47 · 2795 阅读 · 0 评论 -
extern全局变量和全局函数的正确使用方式
对于extern全局变量和函数,使用头文件来声明它们在定义全局变量和函数的地方include头文件在使用全局变量和函数的地方include头文件注:声明和定义变量的区别在于,声明只是告知编译器一个变量存在,它的类型是什么,而没有为变量申请内存空间。定义变量代表它已经被实例化,这个变量有了内存空间。example:globalVar.h //全局变量声明处extern int global_variable;globalFun.h //全局函数声明处extern int incr.原创 2021-09-23 16:22:15 · 5559 阅读 · 1 评论 -
sprintf(pointer + offset, “format“, value)形式的含义
int val = 123;char arr[10] = { 0 };sprintf(arr + 5, "-%d", val);这段代码的含义是将int型123转换为字符数组’123’, 并从arr首地址偏移5个单位的位置开始写,结果是: [0] 0 '\0' char [1] 0 '\0' char [2] 0 '\0' char [3] 0 '\0' char [4] 0 '\0' char [5] 45 '-' char [6] 49 '1' char [7]原创 2021-07-07 19:40:10 · 155 阅读 · 0 评论 -
sizeof判断数组大小
int main(){ const char *collectionA[] = { "adef5444" }; // 4 const char *collectionB[] = { "adef5444", "CDE" }; // 8 const char *str = "abc"; // 4 cout << sizeof(collectionA) << endl; cout << sizeof(coll原创 2021-07-07 17:47:32 · 2868 阅读 · 0 评论 -
C语言中以static说明符开头的变量和函数具有的性质
在头文件定义了函数,可能会在多个源文件中包含相同的头文件,如果不加static,当编译器展开头文件时,同一个函数会被定义多次。使用static关键字会把它定义为本地函数,其作用域限制在本文件内。不适用static就需要用宏定义的方式,使用#ifdef,#ifndef很#endif来防止重复包含。...原创 2021-04-12 22:10:03 · 1402 阅读 · 0 评论 -
练习 3-2 escape
#include <stdio.h>#define MAXLEN 100void escape(char *, char *);void descape(char *, char *);int main(int argc, char **argv) { char src[MAXLEN] = "This is a \t \n string"; char des[MAXLEN]; escape(des, src); printf("Des string原创 2020-08-22 22:49:35 · 159 阅读 · 0 评论 -
二分搜索实现
#include <stdio.h>#define MAXSIZE 10int binsearch(int val, int arr[], int size);int main(int argc, char **argv) { int arr[MAXSIZE]; for (int i = 0; i < MAXSIZE; ++i) { arr[i] = i; } printf("Please enter the value: \n"原创 2020-08-13 23:23:35 · 203 阅读 · 0 评论 -
2-5函数any
#include <stdio.h>#include <stdlib.h>#define MAXLEN 100char *getPart(char s[], int start, int end);int find_word(char s[], char c[]);void getline(char s[]);int main(int argc, char **argv) { char str[MAXLEN]; char target[MAXLEN]原创 2020-08-12 23:27:58 · 117 阅读 · 0 评论 -
char *指针与char []数组的区别
char *str = "hello";char arr[] = "hello";以上定义中str和arr差别很大,str是一个初值指向"hello"字符串常量的指针,这个指针可以指向其他地址,但是不能通过指针修改字符串的值。访问后会出现egmentation fault (core dumped)错误。arr是一个刚好容纳"hello"和’\0’的数组,可以通过数组的首地址来访问和修改数组元素。...原创 2020-08-09 21:32:35 · 961 阅读 · 0 评论 -
squeeze滤除特定字符或单词
#include <stdio.h>#define MAXLEN 100void squeeze(char s[], char c);int main(int argc, char *argv[]) { char s[] = "hello"; char c = 'l'; squeeze(s, c); printf("String: %s\n", s);}void squeeze(char s[], char c) { char *p原创 2020-08-09 21:25:14 · 146 阅读 · 0 评论 -
伪随机数的实现
rand.h#ifndef RAND_Hunsigned long int next = 1;int rand() { next = next * 1103515245 + 12345; return (unsigned int)(next/65535) % 32768;}void seed(unsigned int seed) { next = seed;}#endifmain.c#include <stdio.h>#include "ra原创 2020-08-06 23:56:26 · 278 阅读 · 0 评论 -
atoi 和 htoi的实现
#include <stdio.h>#define DEC 10#define HEX 16int atoi(const char[]);int htoi(const char[]);int main(int argc, char **argv) { const char a[] = "5"; const char b[] = "18"; const char c[] = "255"; const char m[] = "a"; con原创 2020-08-06 23:42:36 · 711 阅读 · 0 评论 -
scanf函数的使用
scanf函数向变量中填入用户输入后格式化的值:int year;scanf("%d", &year);year作为scanf的输出参数,要传入其地址,所以使用了取地址符。原创 2020-08-04 22:44:17 · 210 阅读 · 0 评论 -
是否是闰年的程序判断
#include <stdio.h>#include <stdbool.h>bool isLeap(int);int main(int argc, char **argv) { int year; printf("Please enter the year: \n"); scanf("%d", &year); if (isLeap(year)) { printf("The year %d is leap year\n"原创 2020-08-04 22:40:41 · 531 阅读 · 2 评论 -
strlen函数实现
#include <stdio.h>int strLen(const char *);int main(int argc, char **argv) { char s[] = "hello"; printf("String length: %d\n", strLen(s)); return 0;}int strLen(const char *s) { int len = 0; while (s[len] != '\0') {原创 2020-08-04 22:28:52 · 530 阅读 · 0 评论 -
2-1 打印不同数据类型表示范围
#include <stdio.h>#include <limits.h>int main(int argc, char **argv) { printf("Size of Char: %d\n", CHAR_BIT); printf("Size of Char MAX: %d\n", CHAR_MAX); printf("Size of int max: %d\n", INT_MAX); printf("Size of int min: %d\原创 2020-08-04 22:20:10 · 320 阅读 · 0 评论 -
1-19 练习
#include <stdio.h>#define MAXLEN 10int max = 0;char line[MAXLEN];int getline(char *, int);void copy(char *, char *);void reverse(char *);int main(int argc, char **argv) { int len = 0; while (len = getline(line, MAXLEN) > 0) {原创 2020-08-02 15:11:15 · 327 阅读 · 0 评论 -
1-18 练习
#include <stdio.h>#define MAXLEN 10#define SP ' '#define TAB '\t'int max = 0;char line[MAXLEN];char longest[MAXLEN];int getline(char *, int);void copy(char *, char *);void removeChar(char *, int maxlen);int main(int argc, char **argv) {原创 2020-08-02 11:26:10 · 133 阅读 · 0 评论 -
1-17 练习
#include <stdio.h>#define MAXLEN 10#define THRHOLD 8char line[MAXLEN];char longest[MAXLEN];int getline(char *, int);void copy(char *, char *);int main(int argc, char **argv){ int len, max; len = max = 0; while ((len = getline(l原创 2020-08-02 11:07:48 · 127 阅读 · 0 评论 -
寻找最长的输入行
#include <stdio.h>#define MAXLEN 100int max = 0;char line[MAXLEN];char longest[MAXLEN];int getline(char *, int);void copy(char *, char *);int main(int argc, char **argv) { int len = 0; int max = 0; while ((len = getline(line, M原创 2020-07-29 23:37:43 · 465 阅读 · 0 评论 -
1-14 统计输入单词中字符出现次数
#include <stdio.h>#define MAXLETTER 200int occureTime[MAXLETTER];int main(int argc, char **argv) { char c; while ((c = getchar()) != EOF) { int index = c - 0; printf("%d\n", index); ++occureTime[index]; }原创 2020-07-29 00:06:02 · 100 阅读 · 0 评论 -
1-13 打印输入单词长度的直方图
#include <stdio.h>#include <stdbool.h>#define MAXWORDCOUNT 10int main(int argc, char **argv) { int arr[MAXWORDCOUNT]; char c; for (int i = 0; i< MAXWORDCOUNT; ++i) { int count = 0; bool start = false;原创 2020-07-27 23:27:00 · 188 阅读 · 0 评论 -
1-12 习题
#include <stdio.h>int main(int argc, char **argv) { char c; while ((c = getchar()) != EOF) { if (c == ' ') { putchar('\n'); } else { putchar(c); } }}原创 2020-07-27 22:35:22 · 155 阅读 · 0 评论 -
1-10 练习
#include <stdio.h>#define trans '\\'#define tab '\t'#define back '\b'#define backslash '\\'int main(int argc, char **argv) { char c; while ((c = getchar()) != EOF) { if (c == tab) { putchar (trans); putc原创 2020-07-26 11:13:22 · 188 阅读 · 0 评论 -
1-9 习题
#include <stdio.h>#define space ' 'int main(int argc, char **argv) { int c; while ((c = getchar()) != EOF) { putchar (c); if (c == space) { while(c == space) { c = getchar(); }原创 2020-07-25 11:38:07 · 143 阅读 · 0 评论 -
1-8 习题
#include <stdio.h>#define space ' '#define tab '\t'#define newline '\n'int main(int argc, char **argv) { int spaceCount = 0; int tabCount = 0; int newlineCount = 0; char c; while ((c = getchar()) != EOF) { switch (c原创 2020-07-25 11:25:58 · 260 阅读 · 0 评论