Tag: c

在C中连接Postgresql

我正在尝试将在Windows上运行的C脚本连接到Postgresql数据库。 目前,我在网站上获得了这个脚本: #include #include “libpq-fe.h” #include #include int main() { PGconn *conn; PGresult *res; int rec_count; int row; int col; conn = PQconnectdb(“dbname=ljdata host=localhost user=dataman password=supersecret”); if (PQstatus(conn) == CONNECTION_BAD) { puts(“We were unable to connect to the database”); exit(0); } res = PQexec(conn, “update people set phonenumber=\’5055559999\’ where id=3”); res = PQexec(conn, “select lastname,firstname,phonenumber […]

基于ATMega8的计算器使用AVRstudi

关于计算器: 基本上这个计算器用于计算环境温度下铜和铝线的电阻,使用公式R2 = R1 *(1 + alpha(T-25)) 这里R2将是输出,R1将是用户使用4×4矩阵键盘输入的值(包括十进制值,如12.5等),T是温度传感器LM35记录的摄氏度温度。 铜的α=0.0039α,铝= 0.0042 它应该如何工作: 基本上温度将由计算器记录,该计算器将给出输入T.25℃的电阻值将由用户使用键盘输入。 现在键0-9和“。” 用于输入值。 在此之后当用户按下键盘上的“+”时,它应该实现铜的公式并在LCD上显示结果,类似地,当用户按下“ – ”时,它应该实现铝的公式。 让我们暂时保留“*”“/”和“=”按钮作为备用按钮。 进展到现在: 使用我在此附件中发送给您的代码,我能够正确地获得屏幕上的温度,我能够看到R1的值(即25°C时的电阻值)现在我无法弄清楚如何使用这些获取输出的值。 请帮我解决一下这个。 🙂 谢谢和问候,Mohit Goyal #define F_CPU 1000000UL #include #include #include #include #include “lcd.h” #include “lcd.c” #include #define KB_PORT_OUT PORTB #define KB_PORT_IN PINB void port_init(void) { DDRB = 0x0f; //Key-board port, higer nibble – input, lower […]

如何通过命令行参数传递参数将文本替换为文件的特定位置

我的目的是读取第一行中的第二个元素,并将其替换为我们作为命令行参数传递的值,并将其替换为input.txt文件中的值 输入文件:logic.txt 一个= 1234 2 = 3456 我希望在编译代码后我的文件可以像这样更改。 ./a.out 1567 目前我正在获得这样的输出 ./filelogic 1567 1567 = 1234 2 = 5678 在编译之后,应该像这样修改预期的输出文件 logic.txt 一个= 1567 2 = 5678 char buf[MAXSIZE] = {}; int num = 0; int i = 0; num = atoi(argv[1]); printf(“%d”,num); FILE *fp1; fp1 = fopen(“logic.txt”,”r”);//currently reading the file. if(fp1 != NULL) { fseek(fp1,3,0);//Need […]

我怎么能从另一个文件访问静态变量?

我怎么能从另一个文件访问静态变量? 静态变量不具有文件范围吗? bash-3.2$ ls ac bc bash-3.2$ cat ac #include static int s = 100; int fn() { /* some code */ } bash-3.2$ cat bc #include #include “ac” extern int s; int main() { printf(“s = %d \n”,s); return 0; } bash-3.2$ gcc bc bash-3.2$ a.exe s = 100

将Node插入到第一位的C编程中

这是我正在编写的程序的一个function,以便更熟悉节点。 我不确定它是否正确,但实质上是检查Node是否为Null,如果是,那么它将信息添加到代码字段并将指针设置为NULL。 否则,它会创建一个新节点并将信息插入代码字段,然后指向现有的第一个节点。 我不确定如何更改指向原始第一个节点的标头指向新节点。 代码是 typedef struct node { LibraryCode location; struct node *next; } Node; void insertFirstNode(LibraryCode code, Node **listPtr) { Node *n=*listPtr; Node *first; if(n==NULL){ n=malloc(sizeof(Node)); n->location=code; n->next=NULL; } else { Node *first; first->location=code; first->next=n; } }

将base 4代码转换为字母

即时通讯工作我有一个assmebler项目,我需要翻译二进制机器代码,我有一个“奇怪的”4基本代码,例如,如果我得到这样的二进制代码“0000-10-01-00”我应该翻译它到“aacba” 00 =一 01 = B 10 = C 11 = d 我已设法将代码翻译成4个基本代码,但我不知道如何从那里继续,或者如果这是正确的方法,… 在下面添加我的代码 void intToBase4 (unsigned int *num) { int d[7]; int j,i=0; double x=0; while((*num)>0) { d[i]=(*num)%4; i++; (*num)=(*num)/4; } for(x=0,j=i-1; j>=0; j–) { x += d[j]*pow(10,j); } (*num)=(unsigned int)x; }

为什么fgets卡在回车上\ r?

我是新来的论坛和c一般,所以请耐心等待我。 我正在尝试编写一个带有文本文件并解析所有单词和字符的ac程序,然后将它们保存到输出文本文件中。 我正在使用C99,Windows 7-64bit,MinGW,记事本,记事本++和用于txt文件的ASNI格式。 我已经读过fgets()比fscanf用于读取输入更好,因为它有缓冲区溢出保护,所以我决定尝试使用它,但它在测试文件中有一些标点符号的问题(我认为这是回车\ r)。 我尝试使用fscanf,除了它跳过所有空格(我可以在以后添加,不关心它),它似乎接受所有文本就好并将其打印在输出文件中。 这是我的测试代码: #include #include #include #include #include void main(int argc, char* argv[]) { int limit=100, flimit=0, flimitmax=1900000000; //I stopped flimitmax short of the 2GB mark char name[limit], copyname[limit]; FILE *data, *output; //Gets the value of a specified data file for reading printf(“\nPlease specify a file to format for data […]

什么时候堆栈分配

即使在C(不仅仅是C ++)中,您也可以在代码块的开头声明变量,该代码块用大括号括起来。 例: #include void use_stack(int cnt) { if (cnt<=16) { int a[16]; int i; a[0]=3; a[1]=5; for (i=2;i<cnt;i++) { a[i]=a[i-1]+a[i-2]; } printf("a[%d] == %d\n",cnt-1,a[cnt-1]); } else { printf("cnt is too big\n"); } } 现在我知道像数组a[16]这样的变量在这种情况下被分配在堆栈上。 我想知道这个数组的空间是在函数的开头(第一个打开花括号)还是在声明它的块的开头分配(在if之后打开花括号)。 从检查汇编代码开始,编译器似乎直接在函数入口处为a[16]分配空间。 我实际上期望在a[16]的声明处分配堆栈(堆栈指针减少),并且堆栈将在相应的if代码块的末尾被解除分配(堆栈指针增加)。 但是这似乎没有发生(即使在a[16]分支中没有使用a[16] , a[16]堆栈直接在函数入口处分配)。 有没有人解释为什么会这样? 那么是否有C语言标准的任何部分,它解释了这种行为,或者是否与“longjmp”或信号处理有关,这可能要求堆栈指针在函数内部是“常量”? 注意:我假设堆栈的原因是在代码块的开头/结尾分配/解除分配,因为在C ++中,在堆栈上分配的对象的构造函数/析构函数将在代码块的开头/结尾处调用。 因此,如果您检查C ++程序的汇编代码,您会注意到堆栈仍然在函数入口处分配; 只是构造函数/析构函数调用将在代码块的开始/结束时完成。 我明确感兴趣的是为什么堆栈没有使用花括号在代码块的开头/结尾分配/解除分配。 问题: 在什么时刻是本地变量分配存储? 仅涉及在函数开始时分配的局部变量。 我很惊讶稍后在代码块内分配的变量的堆栈分配也在函数入口处完成。 到目前为止,答案是: 与优化有关 […]

使用C中的指针进行2D数组操作

假设我有一个操作2D数组的函数,该数组从主函数接收指向2D数组的指针作为其参数。 现在,我想修改(假设每个元素添加10个)2D数组的每个元素。 我有兴趣知道使用给我的单个指针遍历2D数组并返回新修改的数组的指针。 粗糙的结构 假设指针a包含2D数组的初始地址。 int add_10(int *a) { int i, j, b[M][N] = {0}; for(i = 0; i < M; i++) for(j = 0; j < N; j++) b[i][j] = 10 + a[i][j]; }

C – 如何调用链表中的第一个元素?

我想要一个链表来排序,然后能够显示它。 我的代码的问题是,我可以在排序之前显示它,但在排序后,它将不会显示,它将崩溃。 我认为它与“top”变量有关,因为通过调试,它不包含任何内容。 如何调用链表中的第一个元素并使用它来显示它们? 我真的很困惑。 以下仅是显示和排序function。 //Sort and display all employees void displayAllEmps() { if(numEmps == 0) { printf(“No employees are hired.”); fflush(stdout); } else { char output[80]; struct EMP* emp = top; int i; for(i = 1; i next; } } } //Sort function to call insertion sort function void sortEmps() { temp = […]