[关闭]
@shjanken 2015-11-26T01:03:51.000000Z 字数 1598 阅读 858

C 语言学习笔记

未完成 笔记


scanf

  1. scanf("%f,%s,%79[^\n]",var1,var2,var3) == 3
  2. //[^\n] 表示这行剩下的所有字符都放入var3, scanf 返回值表示成功读取的信息条数

Struct (结构体)

切记,为结构体变量赋值相当于叫计算机复制数据

  1. strcut example {
  2. char *name;
  3. int age;
  4. char *sex;
  5. }
  6. struct example my = { "janken", 32 , "man"}; //分配了内存空间
  7. struct example other = my; //再次为 other 分配了内存

使用 typedef 定义结构体的类型名字

  1. typedef struct example {
  2. ...
  3. } alias; //alias 将是 example 的类型别名
  4. alias a = { .. };

打开文件流

使用 fopen 函数打开一个文件(文件描述符). 该函数返回一个指针

  1. FILE *my_file = fopen("/path/to/your/file", "r");

使用fileno函数返回文件描述符的编号.

  1. int descriptor = fileno(my_file);

使用 dup2 函数来复制文件流

  1. dup(4,3) // 将4号数据流复制到3号

每次打开文件都会使用表述符表中新的一项,但如果你想修改某个已经注册过的数据流,比如想让3号描述符重新指其他数据流,可以使用 dup2 函数。dup2() 可以复制数据流。

C 语言的进程

  1. pid_t pid = fork(); // pid_t 是一个保存了进程号的数据结构,可能是int, 也可能是别的。
  2. // 执行了 fork() 函数之后,主进程已经创建了子进程。
  3. ...
  4. if ( pid == 0 ) {
  5. //这些代码都运行在子进程中
  6. ....
  7. }
  1. #include <sys/wait.h> //导入头文件
  2. int pid_status; //用来保存子进程的推出状态
  3. if(waitpid(pid,&pid_status,0) == -1) {
  4. error("等待子进程发生了错误");
  5. }
  6. return 0;
  7. ....
  8. WEXITSTATUS(pid_status); //会返回一个int。必须如此才能获取子进程的返回值。

C 语言的网络编程

  1. #include <sys/socket.h> // 套接字头文件
  2. ...
  3. int listener_d = socket(PF_INET,SOCK_STREAM, 0); //打开套接字
  4. if( listener_d == -1 ) {
  5. error("打开套接子失败");
  6. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注