VS用C语言写库文件.h和解释.h的.c或者叫.cpp? 1C

我想用VS2013写十字链表,然后想学着怎么把函数声明都放到头文件里,然后我看比如Arduino的一些库里面就是.h和.cpp,一个声明一个(是不是叫定义函数呢。。我也不清楚) 。然后我太菜鸡了。。不知道如果我用.h和.c来写其中.c的写法会不会和.cpp不同? 还有VS的项目的.h和.c应该都是放在库文件这个夹子里面的吧? 然后调用这个库的main函数是不是写在源文件的夹子里?

1个回答

一般是先在源文件(.c||.cpp)里写你要的函数,然后在头文件(.h)里放上述写的函数的声明,最后在主函数里include "你的头文件名"就可以在主函数调用你写的函数了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
请问c语言中.h文件如何从cpp中提取或者是撰写

大一的课程设计的一个小程序,老师要求有.h的头文件,但是我只有一个cpp文件,请问这个.h文件如何写?

c语言工程,在.h文件中声明的函数是不是在同名.c文件中定义?

比如在main.c中已经include"output.h",main函数中要用到output.h声明的PrintMessage函数, 那么PrintMessage函数是不是在output.c中定义?

vs code中.h文件的链接问题

在写一个工程是遇到多个文件的链接问题,主程序是 #include <stdio.h> #include "Initialization.h" int main(void){ int chessboard[6][6]; Init_Chessboard(chessboard); } .h文件为 #ifndef Initialization_h #define Initialization_h void Init_Chessboard(int chessboard[][6]); #endif .c文件为 #include "Initialization.h" void Init_Chessboard(int chessboard[][6]){ for(int a=0;a<6;a++){ for(int b=0;b<6;b++){ if(a<2) chessboard[a][b]=1; else if(a>=4) chessboard[a][b]=-1; else chessboard[a][b]=0; } } } 但是编译时报错显示Undefined symbols for architecture x86_64: "_Init_Chessboard", referenced from: _main in main-a935c4.o 可是如果在main中 include initialization.c则没有这样的问题 同样的代码换到Xcode也没有问题 这是为什么呢?需要怎样操作在能链接成功?

linux下同时编译多个 .h和.c文件

同一个目录下,有test1.h test2.h test3.h test4.c test5.c test6.c 这几个文件都是相互关联的, 如何写一个c程序,能同时编译这几个.c文件?

.h头文件中为什么不能正确引用iostream.h头文件?

.h头文件中为什么不能正确引用iostream.h头文件? ``` #include<iostream> using namespace std; ``` 为什么在.cpp文件中都可以正确引用iostream头文件,而我在.h文件中用同样的代码却并不能正确引用?总是说: ``` fatal error: iostream: No such file or directory #include<iostream> ``` 这是为什么??我是新手,求各位大神解答!感谢!

这是一个关于C语言多文件的问题

![图片说明](https://img-ask.csdn.net/upload/201910/23/1571813906_916522.png) 这是我写的主函数文件,我想让他包含12345.cpp文件 ![图片说明](https://img-ask.csdn.net/upload/201910/23/1571813937_352523.png) 这是我写的12345.cpp文件 排序那个文件的时候,出现错误。 排序代码练习.cpp F:\C语言程序\排序代码练习.cpp(5) : fatal error C1083: Cannot open include file: '12345.h': No such file or directory 我觉得比较奇怪,因为12345我已经创立了,他怎么说没有呢

C语言小菜一问.关于多文件编译问题

这是主函数包含的头文件 #include"algo2-1.cpp" #include"stdio.h" #include"stdlib.h" 问题来了 algo2-1.cpp 我修改这个文件的内容后.. 编译链接执行主函数这个文件..为什么执行 的内容还是修改前的东西...请问问题在哪里 大神麻烦讲一讲. 小弟感激不尽,临表涕零.

c++调用.h文件时出现未定义标识符?

``` #ifndef C++LIB.H #define C++LIB.H template<typename T> void Reverse(T a[], int n) // 将数组的前n个元素逆置 { T temp; for (int i = 0; i < n / 2; i++) { temp = a[i]; a[i] = a[n - 1 - i]; a[n - 1 - i] = temp; } } template<typename T> void Compact(T a[], int arraySize) { int free_index = 0; // 非零元素存放地址 for (int i = 0; i < arraySize;i++) // 检测整个数组 { if (a[i] != 0) // 发现非零元素 { if (i != free_index) // 前移 { a[free_index] = a[i]; a[i] = 0; } free_index++; } } } #endif ``` ``` #include <iostream> #include "c++lib.h" using namespace std; int main() { int a[6] = { 1, 0, 3, 5, 0, 6 }; for ( int i : a) { cout << i << " "; } cout << endl; Reverse(a, 6); Compact(a, 6); for (int i : a) { cout << i << " "; } return 0; } ```

c++中多个cpp之间的include的问题

A.cpp中include了B.cpp,B.cpp中又include了C.cpp,那么A.cpp是include了C.cpp吗

【c语言】【数据结构】无法找打自己定义的头文件BST.h

#include<stdio.h> #include<stdlib.h> #define MaxSize 100 #include"BST.h" void main() { int T; int data[MaxSize],i=0,num,j,choice,s; printf("请先输入空格符,再输入所要测试的序列T:\n"); while((getchar())!='\n') { scanf("%d",&num); data[i]=num; i++; } T=Create(data,i); printf("指令菜单如下:"); printf("\n 0: exit"); printf("\n 1中序遍历:"); printf("\n 2:查找成功的平均查找长度:"); printf("\n 3:删除:"); while(choice) { printf("\n choose the opperation to continue\n"); scanf("%d",&choice); switch(choice) { case 0: exit(0); case 1: printf("\n此二叉排序树中序遍历结果为:"); InorderTraverse(T,1); break; case 2: s=0; computeASL(T,1,&s,0); printf("\n二叉排序树T查找成功的平均查找长度:ASL=%d/%d",s,i); break; case 3: printf("输入你要删除的数据元素:"); scanf("%d",&num); j=Search(T,num,1); if(j) { T=Delete(T,num); printf("删除后,序列T的中序遍历结果:"); InorderTraverse(T,1); } else printf("此二叉排序树中无数据元素x\n"); break; } } } int Insert(BiTreeNode **root,int item) //插入 { BiTreeNode *current,*parent=NULL,*p; current= *root; while(current != NULL) { if(current->data == item) return 0; parent=current; if(current->data < item) current = current->rightChild; else current= current->leftChild; } p=(BiTreeNode *)malloc(sizeof(BiTreeNode)); if(p==NULL) { printf("空间不够!"); exit(1); } p->data = item; p->leftChild = NULL; p->rightChild = NULL; if(parent == NULL) *root = p; else if(item< parent->data) parent->leftChild =p; else parent->rightChild =p; return 1; } int Search(BiTreeNode *root,int item) { BiTreeNode *p; if(root!=NULL) { p=root; while(p!=NULL) { if(p->data == item) return 1; if(item>p->data) p=p->rightChild; else p=p->leftChild; } } return 0; } void InorderTraverse(BiTreeNode *root) //中序遍历显示 { if(root == NULL) return; if(root->leftChild != NULL) InorderTraverse(root->leftChild); printf("%d ",root->data); if(root->rightChild !=NULL) InorderTraverse(root->rightChild); } BiTreeNode* Delete(BiTreeNode *root,int x) //删除操作 { BiTreeNode *s,*curr,*f,*q; int flag=0; curr=root; while((curr!=NULL)&&(!flag)) //找到要删除的结点 { if(curr->data==x) flag=1; else if(x<curr->data) { f=curr; //记住双亲的指针 curr=curr->leftChild; } else { f=curr; curr=curr->rightChild; } } if(flag) { if(curr->leftChild==NULL&&curr->rightChild==NULL) //左右子树都为空 { if(curr==root) { free(curr); root=NULL; } else { if(curr==f->leftChild) { free(curr); f->leftChild=NULL; } else { free(curr); f->rightChild=NULL; } } } else if(curr->leftChild==NULL&&curr->rightChild!=NULL) //左子树为空 { if(curr==root) { root=curr->rightChild; free(curr); } else { s=curr->rightChild; if(curr==f->leftChild) //判断要删除结点是双亲结点的左子树还是右子树 f->leftChild=s; else f->rightChild=s; free(curr); } } else if(curr->rightChild==NULL&&curr->leftChild!=NULL) //右子树为空 { if(curr==root) { root=curr->leftChild; free(curr); } else { s=curr->leftChild; if(curr==f->leftChild) //判断要删除结点是双亲结点的左子树还是右子树 f->leftChild=s; else f->rightChild=s; free(curr); } } else //左,右子树都有 { q=curr; s=curr->rightChild; while(s->leftChild!=NULL) { q=s; s=s->leftChild; } curr->data=s->data; if(curr=q) { if(s->rightChild==NULL) { free(s); q->rightChild=NULL; } else { q->rightChild=s->rightChild; free(s); } } else { if(s->rightChild==NULL) { free(s); q->leftChild=NULL; } else { q->leftChild=s->rightChild; free(s); } } } } else printf("此二叉排序树为空"); return root; } #include <stdio.h> #include<stdlib.h> #include"math.h" #define MaxSize 100 typedef struct node { int data; struct node *leftChild; struct node *rightChild; }BiTreeNode; #include "BiTree.h" void main() { int T[MaxSize],x,choice; int i=0,n; double ASL; BiTreeNode *root =NULL; printf("请先输入一个空格符,再输入所要测试的序列T:\n"); //getchar()函数的要求 while((getchar()) !='\n') //以\n作为输入结束的标志 { scanf("%d",&T[i]); i++; } n=i; for(int j=0;j<n;j++) Insert(&root,T[j]); printf("指令菜单如下:"); printf("\n 0: exit"); printf("\n 1中序遍历:"); printf("\n 2:查找成功的平均查找长度:"); printf("\n 3:删除:"); while(choice) { printf("\n choose the opperation to continue\n"); scanf("%d",&choice); switch(choice) { case 0: exit(0); case 1: printf("\n此二叉排序树中序遍历结果为:"); InorderTraverse(root); break; case 2: ASL=(log10(n+1))/(log10(2)); printf("\n二叉排序树T查找成功的平均查找长度:%f\n",ASL); break; case 3: printf("输入你要删除的数据元素:"); scanf("%d",&x); if(Search(root,x)) { root=Delete(root,x); printf("删除后,序列T的中序遍历结果:"); InorderTraverse(root); } else printf("此二叉排序树中无数据元素%d\n",x); break; } } } typedef struct { int *data; int size; }BST; void Insert(BST T,int i,int key) { if(i<1||i>MaxSize) printf("overflow!"); if(T.data[i]==-1) T.data[i]=key; else if(key<T.data[i]) Insert(T,2*i,key); else if(key>T.data[i]) Insert(T,2*i+1,key); } BST Create(int *data,int num) { BST T; T.data=(int *)malloc(MaxSize*sizeof(int)); //动态申请数组空间 for(int j=0;j<MaxSize;j++) T.data[j]=-1; T.size=0; //初始化 for(int i=0;i<num;i++) { Insert(T,1,data[i]); T.size++; } return T; } void InorderTraverse(BST T,int i) { if(T.data[i]>=0) { InorderTraverse(T,2*i); printf("%d ",T.data[i]); InorderTraverse(T,2*i+1); } } int Search(BST T,int key,int i) { if(T.data[i]==-1) return 0; else if(key==T.data[i]) return 1; else if(key<T.data[i]) Search(T,key,2*i); else Search(T,key,2*i+1); } BST Delete(BST T,int key) { BST Q; Q.data=(int *)malloc(MaxSize*sizeof(int)); for(int i=0;i<MaxSize;i++) Q.data[i]=-1; for(i=1;i<MaxSize&&T.size>0;i++) { if(T.data[i]==-1||T.data[i]==key) continue; Insert(Q,1,T.data[i]); T.size--; Q.size++; } return Q; } computeASL(BST T,int i,int *s,int j) //计算平均查找长度 { if(T.data[i]!=-1) { j++; //j记录当前结点的在当前树中的深度 *s=*s+j; //记录已遍历过的点的深度之和 if(computeASL(T,2*i,s,j)) //计算左子树的ASL { if(computeASL(T,2*i+1,s,j)) //计算右子树的ASL {j--; return 1;} } } else return 1; }

VS2010 编译出错 无法打开包括文件:“stdio.h”: No such file or directory 1>,还有救吗

VS2010 卸载之后又手动卸载了一些相关组件,重新安装后编译时出错 fatal error C1083: 无法打开包括文件:“stdio.h”: No such file or directory 1>,还有救吗?(新手)是我动了一些不该动的文件夹吗?![图片说明](https://img-ask.csdn.net/upload/201903/09/1552134827_907154.jpg)![图片说明](https://img-ask.csdn.net/upload/201903/09/1552136350_656811.jpg)![图片说明](https://img-ask.csdn.net/upload/201903/09/1552136360_672611.jpg)

使用Devc++报错 e6.cpp Sales_item.h: No such file or directory.

![图片说明](https://img-ask.csdn.net/upload/202003/05/1583375848_497410.png) 照着C++primer写的......不知道为啥有错

怎么把zlib的库添加到dvc++里面啊

怎么把zlib的库添加到dvc++里面啊,我把zlib.h添加到include里面但是compress函数 调用依然出现 [Linker error] C:\Users\ADMINI~1\AppData\Local\Temp\cc8CQ6St.o:未命名1.cpp:(.text+0x81): undefined reference to `compress' 这种错误代码

在一个CPP文件里如何调用另一个CPP文件中的变量

如当前在A.cpp中定义一个变量int a; 想在B.cpp中调用。 A和B都没有.h头文件。 这样应该如何写才能调用呢?

C++导入*.h头文件后 出现LNK2001无法解析的外部符号 含有opencv库

seg.h 头文件导入至 Cpig.cpp文件后出现如下错误: ``` 1>------ 已启动生成: 项目: AnimalsFatMeasure, 配置: Release x64 ------ 1>Cpig.cpp 1>seg.cpp 1>Cpig.obj : error LNK2001: 无法解析的外部符号 "class cv::Mat g_srcImage" (?g_srcImage@@3VMat@cv@@A) 1>Cpig.obj : error LNK2001: 无法解析的外部符号 "class cv::Mat g_grayImage" (?g_grayImage@@3VMat@cv@@A) 1>D:\AnimalsFatMeasure\AnimalsFatMeasure\x64\Release\AnimalsFatMeasure.exe : fatal error LNK1120: 2 个无法解析的外部命令 ``` ```cpp //seg.h #ifndef __SEG_H__ #define __SEG_H__ #include"stdafx.h" #include <iostream> #include<opencv2\opencv.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<vector> #include<math.h> #include<algorithm> #include<time.h> #include<io.h> #include<stdio.h> #include<string> using namespace cv; using namespace std; extern Mat g_srcImage; extern Mat g_grayImage; inline void ImageLoad(string imagefile) { Mat ori_image = imread(imagefile, 0); Rect rect(100, 100, 540, 400); ori_image = ori_image(rect);//截取图像 threshold(ori_image, ori_image, 1, 255, CV_THRESH_BINARY);//二值化 //threshold(ori_image, ori_image, g_nThresh, g_nMaxThresh, CV_THRESH_BINARY);//二值化 //waitKey(0); imwrite("binaryimg.jpg", ori_image); g_srcImage = imread("binaryimg.jpg", 1); if (!g_srcImage.data) { printf("读取错误,图片不存在"); } //得到原图的灰度图并进行平滑 //Point point; cvtColor(g_srcImage, g_grayImage, COLOR_BGR2GRAY); blur(g_grayImage, g_grayImage, Size(3, 3)); on_ContourChange(0, 0); } ``` ```cpp // Cpig.cpp: 实现文件 #include <opencv2/opencv.hpp> #include "stdafx.h" #include "Cpig.h" #include "afxdialogex.h" #include "resource.h" #include <algorithm> #include <fstream> #include <string> #include <windows.h> #include <iostream> #include "INFOR.h" #include "seg.h" ```

C文件怎么改写成java文件?

最近遇到一个棘手的问题,老板给了几个.unl格式的文件,文本打开全是乱码,说是要求用java读取解析,给了个C写的解析过程,可我不懂C语言。虽然有格式文档但是怎么解都解不出正确的内容来,哪位大神有能将C语言翻译成java呢? 或者说那位大神能使用java按照格式解析出二进制的内容,可以联系我哦,可以付钱买源码。 ``` #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <stdio.h> #include <time.h> #include <string.h> #include "billBinToAsc.h" #define BILL_VERSION "2017/07/03" #define BILL_SIZE 337 #define BILL_ASC_SIZE 2048 #define MAX_BILL_COUNT 10000 void getNowTime(char * strNow,size_t size) { time_t Now; struct tm * tm_time; Now = time(NULL); tm_time = localtime(&Now); strftime(strNow,size,"%Y-%m-%d %H:%M:%S",tm_time); } void printBill(const tag_bill * billdata,char * strBuf) { char temp[BILL_ASC_SIZE]; time_t t_time; struct tm * tm_time; *strBuf = 0; //话单ID sprintf((char *)&temp,"%d-%d|",billdata->call_id1,billdata->call_id2); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->call_num); strcat(strBuf,temp); //主被叫 sprintf((char *)&temp,"%s",billdata->caller_no); int len = strlen(temp); for (int j=0;j<len;j++) { //if(temp[j] == '\r' || temp[j] == '\n') if(temp[j] == '\r'||temp[j] == '\n') { temp[j] = '\0'; } } len = strlen(temp); //temp[len] ='|'; char temp2[2]="|"; strcat(temp,temp2); strcat(strBuf,temp); sprintf((char *)&temp,"%s|",billdata->callee_no); strcat(strBuf,temp); //时间 t_time = billdata->wait_begin; tm_time = localtime(&t_time); strftime(temp,BILL_ASC_SIZE,"%Y-%m-%d %H:%M:%S|",tm_time); strcat(strBuf,temp); t_time = billdata->wait_end; tm_time = localtime(&t_time); strftime(temp,BILL_ASC_SIZE,"%Y-%m-%d %H:%M:%S|",tm_time); strcat(strBuf,temp); t_time = billdata->ack_begin; tm_time = localtime(&t_time); strftime(temp,BILL_ASC_SIZE,"%Y-%m-%d %H:%M:%S|",tm_time); strcat(strBuf,temp); t_time = billdata->ack_end; tm_time = localtime(&t_time); strftime(temp,BILL_ASC_SIZE,"%Y-%m-%d %H:%M:%S|",tm_time); strcat(strBuf,temp); t_time = billdata->call_begin; tm_time = localtime(&t_time); strftime(temp,BILL_ASC_SIZE,"%Y-%m-%d %H:%M:%S|",tm_time); strcat(strBuf,temp); t_time = billdata->call_end; tm_time = localtime(&t_time); strftime(temp,BILL_ASC_SIZE,"%Y-%m-%d %H:%M:%S|",tm_time); strcat(strBuf,temp); //模块信息 sprintf((char *)&temp,"%d|",billdata->serviceno); //operation_type_id strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->trkno); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->trunkgroup_no); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->module_no); strcat(strBuf,temp); //设备信息 sprintf((char *)&temp,"%d|",billdata->device_type); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->device_no); strcat(strBuf,temp); sprintf((char *)&temp,"%s|",billdata->devicein); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->call_type_id); strcat(strBuf,temp); //原因信息 sprintf((char *)&temp,"%d|",billdata->waitcause); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->releasecause); strcat(strBuf,temp); //呼叫中心信息 sprintf((char *)&temp,"%d|",billdata->subccno); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->vdn); strcat(strBuf,temp); //杂项 sprintf((char *)&temp,"%d|",billdata->mediatype); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->uvid); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->orgccno); strcat(strBuf,temp); sprintf((char *)&temp,"%u-%u|",billdata->org_call_id1,billdata->org_call_id2); strcat(strBuf,temp); //原始呼叫信息 sprintf((char *)&temp,"%s|",billdata->orgcalleeno); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->orgserviceno); strcat(strBuf,temp); //级别信息 sprintf((char *)&temp,"%d|",billdata->serccno); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->serservice); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->userlevel); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->usertype); strcat(strBuf,temp); //杂项 sprintf((char *)&temp,"%d|",billdata->callincause); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->enterreason); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->leavereason); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->billinfo1); strcat(strBuf,temp); //上个设备信息 sprintf((char *)&temp,"%d|",billdata->preserviceno); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->predevicetype); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->predeviceno); strcat(strBuf,temp); sprintf((char *)&temp,"%s|",billdata->predevicein); strcat(strBuf,temp); //技能 sprintf((char *)&temp,"%d|",billdata->mediainfotype); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->skillid); strcat(strBuf,temp); //int billinfo2; //int billinfo3; //int billinfo4; //char str1[31]; //char str2[25]; //int billinfo5; //int billinfo6; //后为添加的部分字段: sprintf((char *)&temp,"%d|",billdata->locationid); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->billinfo2); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->billinfo3); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->billinfo4); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->billinfo5); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->str1); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->str2); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->billinfo6); strcat(strBuf,temp); sprintf((char *)&temp,"%d|",billdata->billinfo7); strcat(strBuf,temp); // sprintf((char *)&temp,"%d|",billdata->billinfo8); //strcat(strBuf,temp); // sprintf((char *)&temp,"%d|",billdata->billinfo9); //strcat(strBuf,temp); // sprintf((char *)&temp,"%d|",billdata->billinfo10); //strcat(strBuf,temp); //转换结束 strcat(strBuf,"\n"); } int main(int argc,char * argv[]) { const char * strSourceFileName; const char * strTargetFileName; const char * strLogFileName = "billConvt.log"; char strBillAsc[BILL_ASC_SIZE]; char strNowDate[1000]; FILE * fd_s,* fd_t,* fd_log; tag_bill tagBillData; int iReadCount; getNowTime(strNowDate,sizeof(strNowDate)); //command handle if(argc != 3){ printf("%d command error: [usuage] command sourcefilename targetfilename\n",argc); return -1; } //strSourceFileName = argv[1]; //strTargetFileName = argv[2]; strSourceFileName = "H:\\UNL\\Prm20190716_0101_000361.unl";//argv[1]; strTargetFileName = "H:\\parseData\\Prm20190716_0101_000361.dat";// argv[2]; //fprintf("%s=",argv[0]); //open Source file fd_log = fopen(strLogFileName,"a"); if(fd_s == NULL){ fprintf(fd_log,"[%s]Cannot Open SourceFileName:%s\n",strNowDate,strSourceFileName); return -1; } //key parameter check /* if(sizeof(tag_bill) < BILL_SIZE){ fprintf(fd_log,"[%s][error] tag_bill size error![%d][%d]\n",strNowDate,sizeof(tag_bill),BILL_SIZE); return -1; } */ //open Source file fd_s = fopen(strSourceFileName,"r"); if(fd_s == NULL){ fprintf(fd_log,"[%s]Cannot Open SourceFileName:%s\n",strNowDate,strSourceFileName); return -1; } //open Target file fd_t = fopen(strTargetFileName,"w"); if(fd_s == NULL){ fprintf(fd_log,"[%s]Cannot Open TargetFileName:%s\n",strNowDate,strTargetFileName); return -1; } //读数据 int i = 0; for(i=0;i<=MAX_BILL_COUNT && fread((tag_bill*)&tagBillData,BILL_SIZE,1,fd_s) == 1;i++) { printBill(&tagBillData,(char *)&strBillAsc); fprintf(fd_t,"%d|",i); fputs(strBillAsc,fd_t); } //写日志 fprintf(fd_log,"[%s] Convert SourceFile:%s into TargetFile:%s OK! record:%d\n",\ strNowDate,strSourceFileName,strTargetFileName,i); //关闭文件 if(fd_s != NULL) fclose(fd_s); if(fd_t != NULL) fclose(fd_t); if(fd_log != NULL) fclose(fd_log); return 0; } (下面是定义的集合文件) #pragma pack(push,1) typedef struct { int head; int call_id1; int call_id2; int call_num; char caller_no[26]; char callee_no[26]; int wait_begin; int wait_end; int ack_begin; int ack_end; int call_begin; int call_end; int serviceno; int trkno;// int module_no;//------14 int device_type; int device_no; char devicein[26]; int call_type_id; int waitcause; int releasecause; short subccno; short vdn; short mediatype; int uvid; short trunkgroup_no; char orgcalleeno[26]; short orgccno; int org_call_id1; int org_call_id2;//14 int orgserviceno; short serccno; short serservice; unsigned char userlevel;//一字节整形 unsigned char usertype;//一字节整形 short callincause; unsigned char enterreason;//一字节整形 unsigned char leavereason;//一字节整形 int billinfo1; int preserviceno; int predevicetype; int predeviceno; char predevicein[26]; int mediainfotype; short skillid; short locationid; int billinfo2; int billinfo3; int billinfo4; int billinfo5; char str1[31]; char str2[25]; short billinfo6; unsigned char billinfo7; //short billinfo8; //unsigned char billinfo9; //short billinfo10; }tag_bill; #pragma pack(pop) ```

C工程include头文件带路径,如何通过makefile将不同路径下的头文件集合在一起?

我的工程下 include 头文件目录下包含多个子文件夹,每个文件夹下还**有同名的文件** \\\\\\\ ![图片说明](https://img-ask.csdn.net/upload/201901/29/1548752451_366443.png) \\\\\\\ 头文件在include时,还带有文件目录(互相调用)如下: #include <time.h> #include <stdio.h> /* FILE */ #include "libavcodec/avcodec.h" #include "libavutil/dict.h" #include "libavutil/log.h" 问题: 我如何通过makefile 在不修改 “include包含文件目录”的情况下将这些 文件结合在一起,正常调用??? 我的意思就是说:比如:#include "libavutil/dict.h" makefile 能否做到谢谢胡定位到文件夹 libavutil 这一层次(或者类似操作) 这样 #include "libavutil/dict.h"就不需要改了

vc++6.0执行该程序后的这一个错误怎么处理

c语言文件地址,免费下的 http://download.csdn.net/download/u012345238/8418247 错误: --------------------Configuration: Cpp1 - Win32 Debug-------------------- Compiling... Cpp1.cpp c:\users\wrf\desktop\2\cpp1.cpp(3) : fatal error C1083: Cannot open include file: 'head.h': No such file or directory 执行 cl.exe 时出错. Cpp1.obj - 1 error(s), 0 warning(s)

数据结构(c语言)自定义头文件打不开

在vc6.0里面自定义了头文件 #include "SqList.h" 然后显示错误D:\vc6\Microsoft Visual Studio\MyProjects\cplus\shiyabn.cpp(4) : fatal error C1083: Cannot open include file: 'SqList.h': No such file or directory 怎么破?

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

C++(数据结构与算法)78:---分而治之

一、分而治之的思想 分而治之方法与软件设计的模块化方法非常相似 分而治之通常不用于解决问题的小实例,而要解决一个问题的大实例。一般步骤为: ①把一个大实例分为两个或多个更小的实例 ②分别解决每个小实例 ③把这些小实例的解组合成原始大实例的解 二、实际应用之找出假币 问题描述 一个袋子有16个硬币,其中只有一个是假币,这个假币比其他的真币重量轻(其他所有真币的重量都是相同的)...

springboot+jwt实现token登陆权限认证

一 前言 此篇文章的内容也是学习不久,终于到周末有时间码一篇文章分享知识追寻者的粉丝们,学完本篇文章,读者将对token类的登陆认证流程有个全面的了解,可以动态搭建自己的登陆认证过程;对小项目而已是个轻量级的认证机制,符合开发需求;更多精彩原创内容关注公主号知识追寻者,读者的肯定,就是对作者的创作的最大支持; 二 jwt实现登陆认证流程 用户使用账号和面发出post请求 服务器接受到请求后使用私...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

早上躺尸,晚上干活:硅谷科技公司这么流行迟到?

硅谷科技公司上班时间OPEN早已不是什么新鲜事,早九晚五是常态,但有很多企业由于不打卡,员工们10点、11点才“姗姗来迟”的情况也屡见不鲜。 这种灵活的考勤制度为人羡慕,甚至近年来,国内某些互联网企业也纷纷效仿。不过,硅谷普遍弹性的上班制度是怎么由来的呢?这种“流行性迟到”真的有那么轻松、悠哉吗? 《动态规划专题班》 课程试听内容: 动态规划的解题要领 动态规划三大类 求最值/计数/可行性 常...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

立即提问
相关内容推荐