0
47
¥ 70.00购买 ¥100.00 课程7.0折
开通会员,立省7.00元, 立即开通
立即购买

你将收获

大神手把手带你学习C语言

14年C语言编程经验,你值得拥有

经过反复练习,可以融会贯通,学习其他面向对象的语言可以自学成才。

你可以从事服务器开发、游戏开发、数据库开发、区块链开发,嵌入式开发,AI开发。

适用人群

在校学生、上班族

课程介绍

《C语言入门到精通》WangTeacher主讲,每周更新两集。

大神手把手带你学习C语言,14年C语言编程经验,实战教学,你值得拥有。经过反复练习,可以融会贯通,学习其他面向对象的语言可以自学成才。你可以从事服务器开发、游戏开发、数据库开发、区块链开发,嵌入式开发,AI开发。

课程讨论

为什么不全呀

对不起老师,qq群我加不了,我是一个2年级的学生,家长不让加qq,有微信群吗

好像换命令了,我google了一下,好像变成了 ip a

谢谢老师,问题解决了,但是wifi里莫有我家的wifi啊

是要下载?不是系统命令吗????????

为什么ifconfig无效,显示“Command 'ifconfig' not found ,but can be installed with: sudo apt install net-tools”

很适合初学者学习,老师讲的很好,态度也很好

同学笔记

  • tencupofkaiwater 2020-08-16 14:53:54

    来源:类型转换-2 查看详情

    学习目标
    掌握指针类型之间的转换。
    掌握函数指针之间的转换。
    
    指针类型之间的转换
    函数指针之间的转换
    #include <stdio.h>
    #include <string.h>
    
    
    typedef int (*MathSum)(int[], int);
    typedef int (*MathAdd)(int, int);
    typedef int (*MathAgv)(int[], int);
    
    
    int sum(int scores[], int len) {
    	int sum = 0;
    	int i = 0;
    
    
    	for (i = 0; i < len; i++) {
    		sum += scores[i];
    	}
    
    
    	return sum;
    }
    
    
    int add(int a, int b) {
    	return a + b;
    }
    
    
    int agv(int scores[], int len) {
    	int agv = 0;
    	int i = 0;
    
    
    	for (i = 0; i < len; i++) {
    		agv += scores[i];
    	}
    
    
    	return agv / len;
    }
    
    
    typedef struct {
    	MathSum sum;
    	MathAdd add;
    	MathAgv agv;
    } MathTool;
    
    
    void fun_point_test() {
    	MathTool math = { sum, add, agv };
    	int a[5] = { 1,2,3,4,5 };
    
    
    	//memset(&math, 0, sizeof(math));
    
    
    	printf("math.sum = %p, math.add = %p, math.agv = %p\n", math.sum, math.add, math.agv);
    
    
    	//math.sum = sum;
    	//math.add = add;
    	//math.agv = agv;
    	printf("sum(1 2 3 4 5) = %d\n", math.sum(a, sizeof(a)/sizeof(int)));
    	printf("add(1, 2) = %d\n", math.add(1, 2));
    	printf("agv(1 2 3 4 5) = %d\n", math.agv(a, sizeof(a) / sizeof(int)));
    }
    
    
    int main() {
    	char* pc = NULL;
    	int* pi = NULL;
    	int* pc2i = NULL;
    	char c = 'A';
    	int d = 10;
    
    
    
    
    	// 函数指针
    	fun_point_test();
    
    
    	pc = &c;
    	printf("sizeof(pc) = %u\n", sizeof(pc));
    
    
    	pi = &d;
    	printf("sizeof(pi) = %u\n", sizeof(pi));
    
    
    	// 指针类型转换
    	printf("*pc = %c, *pi = %d\n", *pc, *pi);
    	// char* -> int*, 强制类型转换
    	pc2i = (int*)pc;
    	printf("*pc2i = %c, *pc = %c\n", *pc2i, *pc);
    
    
    	// int* -> char*, 强制类型转换
    	d = 1000;  // 1 byte = 255
    	pc = (char*)pi;
    	printf("*pc = %d, *pi = %d\n", *pc, *pi);
    
    
    	// double* -> int*
    	// 由大的类型转换到小的类型时,数据可能会丢失。
    
    
    	return 0;
    }

     

  • tencupofkaiwater 2020-08-16 14:53:35

    来源:类型转换-1 查看详情

    学习目标
    掌握基本数据类型之间的转换。
    
    基本数据之间的转换
    #include <stdio.h>
    
    void char_to_int() {
    	// char -> int
    	char c = 'A';
    	int d = 0;
    
    	printf("c = %c, d = %d\n", c, d);
    	d = c;
    	printf("c = %c, d = %d\n", c, d);
    	d = d + 1;
    	c = d;
    	printf("c = %c, d = %d\n", c, d);
    	printf("c = %d, d = %d\n", c, d);
    }
    
    void int_to_float() {
    	// int <-> float
    	int a = 10;
    	float f = 1.34F; // default double
    
    	// 强制类型转换
    	f = (float)a;
    	printf("a = %d, f = %f\n", a, f);
    
    	f = 1.99F;
    	a = (int)f;
    	printf("a = %d, f = %f\n", a, f);
    }
    
    void float_to_double() {
    	float f = 1.234F;
    	double ff = 2.345;
    
    	f = (float)ff;
    	printf("f = %f, ff = %lf\n", f, ff);
    
    	f = 1.234F;
    	ff = f;
    	printf("f = %f, ff = %lf\n", f, ff);
    }
    
    void int_to_int() {
    	short d1 = 1;
    	int d2 = 2;
    	long int d3 = 3;
    	long long d4 = 40000000;
    	unsigned d5 = 5;
    
    	int t = 0;
    	short ts = 0;
    
    	// short -> int
    	printf("len(short) = %d, len(int) = %d\n", sizeof(short), sizeof(int));
    	t = d1;
    
    	// int -> short
    	ts = (short)d4;
    	printf("ts = %d, d4 = %lld\n", ts, d4);
    }
    
    int main() {
    	// char,int,float,double
    	// case1: char <-> int
    	//char_to_int();
    
    	// case2: int <-> float
    	//int_to_float();
    
    	// case3: float <-> double
    	// float_to_double();
    
    	// case4: int <-> int (short int, unsinged int, long int, long long)
    	int_to_int();
    
    	return 0;
    }

     

  • tencupofkaiwater 2020-08-16 14:53:06

    来源:文件操作函数-下 查看详情

    学习目标
    ftell(),fseek()
    fgetpos(),fsetpos()
    
    获取一个文件的长度
    // 返回stream(流)当前的文件位置,如果发生错误返回-1. 
    long ftell(FILE *stream);
    // 为给出的流设置位置数据,fseek()成功时返回0,失败时返回非零. 
    int fseek(FILE *stream, long offset, int origin);
    origin的值应该是下列值其中之一:
    SEEK_SET	从文件的开始处开始搜索
    SEEK_CUR	从当前位置开始搜索
    SEEK_END	从文件的结束处开始搜索
    
    #include <stdio.h>
    #include <string.h>
    
    int gen_file(const char *path) {
    	const char* content = "www.daozy.net";
    	const unsigned cnt = 100;
    	unsigned i = 0;
    	FILE* fp = NULL;
    
    	fp = fopen(path, "w");
    	if (NULL == fp) {
    		return -1;
    	}
    	for (i = 0; i < cnt; i++) {
    		fputs(content, fp);
    	}
    	printf("write len = %u\n", strlen(content) * cnt);
    	fclose(fp);
    	return 0;
    }
    
    int file_len(const char *path) {
    	FILE* fp = fopen(path, "r");
    	if (NULL == fp) {
    		return -1;
    	}
    
    	printf("0. ftell = %u\n", ftell(fp));
    	// test 1
    	fseek(fp, 10, SEEK_SET);
    	printf("1. ftell = %u\n", ftell(fp));
    
    	// test 2
    	fseek(fp, 10, SEEK_CUR);
    	printf("2. ftell = %u\n", ftell(fp));
    
    	// test 3
    	fseek(fp, 10, SEEK_END);
    	printf("3. ftell = %u\n", ftell(fp));
    
    	fseek(fp, 0, SEEK_END);
    	printf("file length = %u\n", ftell(fp));
    
    	fclose(fp);
    
    	return 0;
    }
    
    int main() {
    	const char* path = "36.txt";
    	// gen_file(path);
    	file_len(path);
    
    	return 0;
    }
    
    fgetpos(),fsetpos()
    // 保存给出的文件流(stream)的位置指针到给出的位置变量(position)中. position变量是fpos_t类型的(它在stdio.h中定义)并且是可以控制在FILE中每个可能的位置对象. fgetpos()执行成功时返回0,失败时返回一个非零值. 
    int fgetpos(FILE *stream, fpos_t *position);
    // 把给出的流的位置指针移到由position对象指定的位置. fpos_t是在stdio.h中定义的. fsetpos()执行成功返回0,失败时返回非零.
    int fsetpos(FILE *stream, const fpos_t *position);
    // 
    void get_get_pos(const char* path) {
    	FILE* fp = NULL;
    	fpos_t position = 0;
    	char buf[1024] = { 0 };
    
    	fp = fopen(path, "r");
    	if (NULL == fp) {
    		return;
    	}
    
    	printf("ftell = %u\n", ftell(fp));
    	fgets(buf, 32, fp);
    	fgetpos(fp, &position);
    	printf("1. fgetpos = %u\n", (unsigned)position);
    
    	position = 64;
    	fsetpos(fp, &position);
    	fgets(buf, 32, fp);
    	fgetpos(fp, &position);
    	printf("2. fgetpos = %u\n", (unsigned)position);
    
    	fclose(fp);
    }
    

     

没有更多了