C 函数 技术教程文章

【C语言】使用结构体和malloc函数时的一些错误。【代码】

使用结构体错误:#include <stdio.h>struct STU {char *name;int score; }stu,*pstu; int main () {strcpy(stu.name,"bit-tech");strcpy(pstu->name,"bit-tech");return0; }错误一:strcpy(stu.name,”bit-tech”);结构体中的成员name是一个指针,声明结构体时并没有对结构体成员初始化,所以成员name没有指向指定的空间,当我们在主函数中想向通过strcpy函数对成员name指向的空间拷贝内容时,却发现程序挂掉了。错误二:strcpy(ps...

C语言之函数调用12—递归法求阿克曼函数

//递归法! /* =========================================== 题目:编写阿克曼函数的递归函数程序! A(m,n)=n+1 (m=0)A(m-1,1) (m=0)A(m-1,A(m,n-1)) (m!=0,n!=0)=========================================== */ #include<stdio.h> int A(int m,int n) {if(m==0)return n+1;else if(n==0)return A(m-1,1);elsereturn A(m-1,A(m,n-1)); } void main() {int m,n,p,flag=1;while(...

总结文件操作函数-目录(三)-C语言

获取、改变当前目录:原型为:#include <unistd.h> //头文件char *getcwd(char *buf, size_t size); //获取当前目录,相当于pwd命令int chdir(const char *path); //修改当前目录,即切换目录,相当于cd命令其中getcwd()函数:将当前的工作目录绝对路径复制到参数buf所指的内存空间,参数size为buf的空间大小. 在调用此函数时,buf所指的内存空间要足够大,若工作目录绝对路径的字符串长度超过参数size大小,则回值NULL,errno的...

【C语言】自己编写程序实现strrchr函数,即在给定字符串中找特定的字符并返回最后出现的位置【图】

//自己编写程序实现strrchr函数,即在给定字符串中找特定的字符并返回最后出现的位置 #include <stdio.h> #include <string.h> char * my_strrchr(char const *str,int ch) {int count=0;while(*str!='\0'){count++;str++;}str--;while(count){if(*str!=ch){str--;count--;}elsereturn str;}printf("未找到该字符。\n");return 0; } int main() {char *p="abcdefabcdef";char a;printf("请输入您要查找的字符:");scanf("%c",&a);p...

c语言中可以在函数内改变全局变量的值【代码】

实例代码如下: 1 #include<stdio.h>2int global_value=9;3void change(void)4{5 global_value=8;6}7void main()8{9 printf("before: global_value=%d",global_value ); 10 printf("\n"); 11 change(); 12 printf("after: global_value=%d",global_value); 1314 } 运行结果:before: global_value=9after: global_value=8Process returned 23 (0x17) execution time : 0.480 sPress any key to continue...

C语言随笔5:函数、函数指针

函数C语言中函数参数传递时,将实参的值拷贝到函数参数的存储区中。这种传递参数的方式称为按值传递。函数不会访问实参本身,访问的是函数存储在栈区的副本,不会改变实参.函数凋用结束,函数在栈区的内容释放. 若要改变实参本身.需用指针传递待修改变量的地址,使函数参数保存该变量地址的值。然后在函数中,通过参数保存的地址间接访问待修改的变量。大部分书籍,将这种做法称为按址传递或按引用传递。实际上,这种传递方式仍然是按...

C语言之函数和字符串

二、函数:2.1、函数的执行:  1、当我们每次进入一个函数的时候,原函数的栈底进行一个备份,之后将当前函数的栈底和栈顶指针分作同一个。  2、此时我们就可以说产生了一个新栈,产生新栈之后会在新栈中申请一段空间(栈帧),申请到空间之后。  3、再将需要备份的一些寄存器压到栈中。  4、之后将栈中的这些空间进行初始化为:0xCCCCCCCC。  5、到这里就已经做好了函数中所有的临时变量空间的分配。  6、之后就可以直...

C语言考题:输入一个字符串,将此字符串中特定的字符删去后, 显示新的字符串,要求用函数来完成删去字符的操作。【代码】

#include <stdio.h> #include <string.h>/*此题只需要删除单个字符,比较简单。相信大家也能做出来的。我这个也是可以实现的。只是加了两个判断如果需要删除特定的"字串"。下面的程序就可以实现。 编写程序:输入一个字符串,将此字符串中特定的字符删去后, 显示新的字符串,要求用函数来完成删去字符的操作。 */del_string(char *str,char *sub){int i,j,k=0;char newstr[30];for(i=0;i<strlen(str);i++){for(j=0;j<strlen(sub)...

C语言 指针基础篇 数组,函数与指针的运用 2 14【代码】【图】

下面看看如何在函数中运用指针吧 下面是往函数传入指针的简单操作,不是传入数组的。判断一个a是否大于b是的话给,是的话对其进行操作,不是的话就直接返回。 1 #include <stdio.h>2int main(){3int num1,num2,*p1,*p2;4 p1 = &num1,p2=&num2;5 scanf("%d%d",&num1,&num2);6 7int fun(int *n1,int *n2); //我们在声明函数时候,要定义好“指针变量” 8if(*p1<*p2){9 fun(p1,p2); //而在传入值的时候...

C语言字符串处理函数【代码】

(1)字符串的复制:字符串复制是比较常见的操作之一,在字符处理函数中包含strcpy函数,该函数可用于复制特定长度的字符串到另一个字符串。其语法为:strcpy(str1,str2),str1是目的字符数组名,str2是源字符数组名,也可以是字符串常量。如下例:#include<stdio.h> #include<string.h> int main() {char str1[30],char2[30];printf("输入目的字符串:\n");gets(str1); /*输入目的字符串*/printf("输入源字符串:...

C语言之函数调用17—递归法之一般函数的调用(2)

//递归法 /* ================================================================== 题目:求F(60),其中F(n)定义如下: F(0)=0; F(1)=1; F(2n)=f(n)+3; F(2n+1)=F(n)+F(2n-1). ================================================================== */ #include<stdio.h> double F(int n) {if(n==0) return 0;else if(n==1) return 1;else if(n%2==0)return F(n/2)+3;else if(n%2!=0)return F((n-1)/2)+F(n-2); } void main() {int...

C语言Scanf函数【图】

C语言的scanf函数一、变量的内存分析(一)字节与地址①. 内 存以字节为单位 每个字节都有自己的内存地址,根据地址就可以找到该字节。整个内存相当于一整个酒店,而酒店以房间为单位,在这里每个房间就相当于是每个字节,地址就是房 号,根据房号可以找到房间(根据地址也可以找到内存中的字节)。相邻房间的房号是连续的,相邻字节的地址也是连续的。计算机中通常以十六进制表示地址。②. 不同类型占用的字节是不一样的,数据越大...

C语言随机函数

在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。可能大家都知道C语言中的随机...

C语言:函数【代码】

#include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> #define PI 3.1415 int main() { float x=30;srand((unsigned)time(NULL));printf("%lf\n",tan(x*PI/180));printf("%lf\n",log(x*PI/180));printf("%lf\n",log10(x*PI/180));printf("sin=%lf\n",sin(x*PI/180));printf("%lf\n",exp(x*PI/180));printf("%lf\n",cos(x*PI/180));printf("%lf\n",sqrt(16));//sqrt=Square Root Calculations(平方根函数...

常用C语言函数 - sprintf()

#define PrgFileNameFormatEx "O%04ld.txt"sprintf(Temp,PrgFileNameFormatEx,(long)(data1->Pcode)) int sprintf( char *buffer, const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。 printf和sprintf都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的...

C语言博客作业--函数嵌套调用【代码】【图】

一、实验作业1.1 十进制转换二进制设计思路如果n==0 输出0 否则如果n==1 输出1 否则dectobin(n/2) 输出n%2代码截图调试问题无二、截图本周题目集的PTA最后排名三、阅读代码用递归实现二分查找 ```include int r_search(int arr[], int low, int high, int k); int main( ) { int key,index,n,i; scanf("%d",&n); int a[n]; for(i=0;i<n;i++){ scanf("%d",&a[i]); } printf("输入要查找的关键字:\n"); scanf("%d", &key); index =...

C语言 数组做函数参数退化为指针的技术推演【代码】

//数组做函数参数退化为指针的技术推演 #include<stdio.h> #include<stdlib.h> #include<string.h>//一维数组做函数参数退化为指针的技术推演void printfA(char * strarr[3]); //计算机中,数组都是线性存储,二维数组元素也是一个个的排列的 //例如: 1,2,3,4,5,6,7,8,9 像这组数据 我们可以认为是一维数组 int a[9]={1,2,3,4,5,6,7,8,9}; //也可以认为是二维数组 int b[3][3]={1,2,3,4,5,6,7,8,9}; //所以计算机并不清楚数...

C语言回调函数总结【代码】

/* Main program ---calls--> Library function ---calls--> Callback funtion */ #include <stdio.h> #include <stdlib.h>typedef double (*op_fun)(double, double);/*函数指针的第一种定义方式,比较奇怪为什么不是 double () (double, double) * op_fun; 这种形式。*/typedef struct _OP {double (*add)(double, double); /*函数指针第二种定义方式*/double (*sub)(double, double);double (*mul)(double, double);//double...

C语言sendto()函数:经socket传送数据

相关函数:send, sendmsg, recv, recvfrom, socket头文件:#include <sys/types.h> #include <sys/socket.h>定义函数:int sendto(int s, const void * msg, int len, unsigned int flags, const struct sockaddr * to, int tolen);函数说明:sendto() 用来将数据由指定的socket 传给对方主机. 参数s 为已建好连线的socket, 如果利用UDP协议则不需经过连线操作. 参数msg 指向欲连线的数据内容, 参数flags 一般设0, 详细描述请参考...

浙大版《C语言程序设计(第3版)》题目集与解答---函数题(不断更新中)【代码】

函数题/*练习5-1 求m到n之和 (10 分) 本题要求实现一个计算m~n(m<n)之间所有整数的和的简单函数。函数接口定义: int sum( int m, int n ); 其中m和n是用户传入的参数,保证有m<n。函数返回的是m~n之间所有整数的和。裁判测试程序样例: #include <stdio.h>int sum(int m, int n);int main() { int m, n;scanf("%d %d", &m, &n);printf("sum = %d\n", sum(m, n));return 0; }你的代码将被嵌在这里 输入样例: -5 8 输出样例:...