c语言函数

C语言中的光标定位函数

流过昼夜 提交于 2019-11-30 00:50:37
C语言中的光标定位函数(将光标移动到屏幕的指定位置) 所谓的光标定位函数,就是实现键盘输入坐标值从而把鼠标的光标移动到相应坐标位置的函数模块,在简单的小游戏如贪吃蛇等需要定位输出的程序中有着较为广泛的应用。 而在用C语言实现光标定位的过程中,则需要从<windows.h>中调用已经封装好的结构体COORD来完成对坐标x,y的记录,调用HANDLE(封装好的结构体)来获得标准输出句柄;同样SetConsoleTextAttribute也是C语言中内置的函数用来移动光标的。 对于只管使用不问原理的萌新,以上均为废话 下面说一说光标函数的使用方法,先来一段光标函数的代码 void gotoxy ( int x , int y ) //光标定位函数 { COORD p ; //定义结构体变量p HANDLE handle = GetStdHandle ( STD_OUTPUT_HANDLE ) ; //获取当前函数句柄 p . X = x ; p . Y = y ; //将光标的目标移动位置传递给结构体 SetConsoleCursorPosition ( handle , p ) ; //移动光标 } 程序示例 # include <stdio.h> # include <windows.h> void gotoxy ( int x , int y ) //光标定位函数 { COORD

问题集锦(30-35)

蓝咒 提交于 2019-11-29 21:41:03
Problem 30 关于 C 和 C++ 混合编程问题? Ans : 如果 C++ 程序要调用已经被编译后的 C 函数,该怎么办? 假设某个 C 函数的声明如下: void foo(int x, int y); 该函数被 C 编译器编译后在库中的名字为 _foo ,而 C++ 编译器则会产生像 _foo_int_int 之类的名字用来支持函数重载和类型安全连接。由于编译后的名字不同, C++ 程序不能直接调用 C 函数。 C++ 提供了一个 C 连接交换指定符号 extern“C” 来解决这个问题。例如: extern “C” { void foo(int x, int y); … // 其它函数 } 或者写成 extern “C” { #include “myheader.h” … // 其它 C 头文件 } 这就告诉 C++ 编译译器,函数 foo 是个 C 连接,应该到库中找名字 _foo 而不是找 _foo_int_int 。 C++ 编译器开发商已经对 C 标准库的头文件作了 extern“C” 处理,所以我们可以用# include 直接引用这些头文件。 -------------------------------------------------------- 延深 ------------------------------------------------

c语言字符串处理函数

假装没事ソ 提交于 2019-11-29 19:45:46
C字符串处理函数的实现(Linux) #include <stddef.h> char * ___strtok = NULL; char * strcpy(char * dest,const char *src) { char *tmp = dest; assert((dest!= NULL) && (src!= NULL)); while ((*dest++ = *src++) != '/0') /* nothing */; return tmp; } char * strncpy(char * dest,const char *src,size_t count) { char *tmp = dest; while (count-- && (*dest++ = *src++) != '/0') /* nothing */; return tmp; } char * strcat(char * dest, const char * src) { char *tmp = dest; while (*dest) dest++; while ((*dest++ = *src++) != '/0') ; return tmp; } char * strncat(char *dest, const char *src, size_t count) { char *tmp = dest; if

C语言中的extern关键字

走远了吗. 提交于 2019-11-29 19:27:11
目录 概述 变量/函数的声明(declaration)与定义(definition) extern关键字 extern关键字与函数 extern关键字与变量 概述 extern关键字可以被用于修饰C变量和函数,他扩展变量和函数的可见性。 变量/函数的声明(declaration)与定义(definition) 声明(declaration) :变量/函数的声明只是宣布变量/函数存在于程序的某个地方,但是还没有为它们分配内存。当一个变量被声明,程序就会知道那个变量的数据类型。当一个函数被声明,程序就会知道函数的参数类型、参数顺序以及返回类型。 定义(definition) :定义一个变量/函数时,除了声明,还会为变量/函数分配内存。可以认为定义是声明的超集。 从上面的解释可以看到, 变量/函数可以被声明多次,但只能被定义一次 。 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 extern关键字 extern关键字与函数 默认情况下,C函数的声明和定义会被自动加上extern。例如,当我们写如下代码 int foo(int arg1, char arg2); 编译器会看到 extern int foo(int arg1, char arg2);

c语言中函数指针和指针函数

独自空忆成欢 提交于 2019-11-29 14:10:49
一.什么是函数指针:   函数指针本质上也是指针,我们所写函数代码在内存中会被分配一段专门的储存空间,这段储存空间的地址就是函数的地址,既然是地址,就可以用指针去表示,自然就有了函数指针。 二.函数指针的用法:   1.首先明确函数指针怎么申明。形如:返回值类型 (*变量名)(参数类型1,参数类型2,。。。)   例如 int (*p) (int,int)   2.我们还需要了解如何通过指针调用函数。 (*p)(3,5);      3.如何给该类型的指针赋值:   非常简单,直接将函数名赋给指针即可,因为函数名即为函数的首地址,这样的赋值顺理成章。   例如: int Func(int x); /*声明一个函数*/ int (*p) (int x); /*定义一个函数指针*/ p = Func; /*将Func函数的首地址赋给指针变量p*/   4.请看一下完整的用法:   # include <stdio.h> int Max(int, int); int main(void) { int(*p)(int, int); int a, b, c; p = Max; printf("please enter a and b:"); scanf("%d%d", &a, &b); c = (*p)(a, b); //通过函数指针调用Max函数 printf("a = %d\nb =

c语言排序代码实现

瘦欲@ 提交于 2019-11-29 13:39:32
关于快速,冒泡,选择,插入等排序,本人用代码实现,均能运行成功。 本文除了排序,针对几种swap函数,也进行了说明,通过汇编代码分析,swap1函数的效率最高。 #include<iostream> #include <cstdio> /*交换函数*/ void swap1(int *a,int *b){   int tmp = *a;   *a = *b;   *b = tmp; } /** *swap2和swap3针对同一个变量,会导致这个变量为0 *因为两个指针指向同一个变量。 */ void swap2(int *a,int *b) {   *a = *a ^ *b;   *b = *a ^ *b; //*a ^ *b ^ *b -> *a   *a = *a ^ *b; //*a ^ *b ^ *a -> *b } void swap3(int *a,int *b) {   *a = *a + *b;   *b = *a - *b;   *a = *a - *b; } void swap3(int &a,int &b){   printf("swap3:%d,%d\n",a,b);   a = a + b;   b = a - b;   a = a - b;   printf("swap3 end:%d,%d\n",a,b); } /*快速排序*/ //不稳定

extern “C”的作用详解

99封情书 提交于 2019-11-29 13:26:06
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编 译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 这个功能十分有用处,因为在C++出现以前,很多代码都是C语言写的,而且很底层的库也是C语言写的,为了更好的支持原来的C代码和已经写好的C语言库,需要在C++中尽可能的支持C,而extern "C"就是其中的一个策略。 这个功能主要用在下面的情况: 1、C++代码调用C语言代码 2、在C++的头文件中使用 3、在多个人协同开发时,可能有的人比较擅长C语言,而有的人擅长C++,这样的情况下也会有用到 给出一个我设计的例子: moduleA、moduleB两个模块,B调用A中的代码,其中A是用C语言实现的,而B是利用C++实现的,下面给出一种实现方法: //moduleA头文件 #ifndef __MODULE_A_H //对于模块A来说,这个宏是为了防止头文件的重复引用 #define __MODULE_A_H int fun(int, int); #endif //moduleA实现文件moduleA.C /

[C语言]实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出9*9口诀表,输入12,输出12*12的乘法口诀表。

▼魔方 西西 提交于 2019-11-29 12:10:10
# define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <stdlib.h> void mull ( int c ) { int i = 0 , j = 0 ; for ( i = 1 ; i <= c ; i ++ ) { for ( j = 1 ; j <= i ; j ++ ) { printf ( "%d*%d=%d " , j , i , i * j ) ; } printf ( "\n" ) ; } } int main ( ) { int c ; printf ( "输入要打印乘法表的行数:\n" ) ; scanf ( "%d" , & c ) ; mull ( c ) ; system ( "pause" ) ; return 0 ; } 来源: CSDN 作者: 88_Rising 链接: https://blog.csdn.net/Richchigga/article/details/89398313

C语言函数的封装操作

China☆狼群 提交于 2019-11-29 10:08:45
C语言函数的封装操作 **//C语言函数封装操作 //文件项目建立 //建立文件索引+命名 //#ifndef STRUCTURE_H //#define STRUCTURE_H //endif# //主函数体加入预处理指令操作**** #include <stdio.h> #include <stdlib.h> #include <string.h> #include"structure.h" #include "enter.h" #include"list.h" #include"load.h" #include"book.h" #include"search1.h" #include"search2.h" #include"quit.h" #include"channge.h" #include"save.h" #include"menu_select.h" #define N 20 #define Q 40 /*主函数*/ main() { int i; FLY flight[Q]; int length; /*保存记录长度*/ for(;;)/*无限循环*/ { switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ { case 0:length=enter(flight);break;/*输入记录*/ case 1:list

C语言学习之基础语法二

邮差的信 提交于 2019-11-29 08:37:13
数据的输入和输出 1、字符输入函数 字符输入函数(getchar函数)是从标准输入设备上输入一个字符到计算机内部。 函数调用格式:getchar(); 说明: 须包含头文件stdio.h getchar是一个无参函数 一个getchar函数只能接收一个字符,在输入时,只有在用户键入“回车键”(Enter)后,输入才执行。 2、字符输出函数 字符输出函数(putchar)是在标准输出设备上输出一个字符。 函数调用格式:putchar(ch); Ch是函数参数,可以是字符型或整型的常量变量或表达式 #include <stdio.h> void main() { char c1,c2; c1='a';c2='B'; putchar(c1); putchar(c2); putchar(c1-32); //先进行ASCII码值的运算再输出 putchar(c2+32); } 程序运行结果:aBAb5 #include <stdio.h> void main() { putchar(getchar()); putchar(getchar()); } 运行程序,输入:abEnter 输出结果: ab 假如采用先输入字符a,按回车,在输入字符b,按回车。会发现第二个字符b无法显示在屏幕上,换句话说,第二个字符b没有输入到机器内部。原因在于“回车”也是字符。第一次输入a后的回车