‘\n’换行符
通常来讲我们都是使用这个符号来进行换行的操作,但是这个符号不仅仅是用于换行
当标准输出文件中默认使用缓冲 ,也就是当遇到 \n 的时候会进行刷新缓冲区(把数据输 出)
当打印语句后面没有换行符时 , 需要等待缓冲区被装满或者被别的语句刷新或程序正常退出
在此我们可以进行一个实验进行尝试:
#include <stdio.h>
#include <unistd.h>
int main ()
{
while(1)
{
printf("hello imawode");
sleep(1);
}
return 0;
}
此时我们不使用换行符,在每次打印之后加入一个一秒的睡眠,此时使用gcc进行编译和输出,我们发现完全没有打印任何东西,因为此时没有足够的程序填满缓冲区同时程序也运行不到return中结束,因此在等待填满缓冲区,那么假如我们加上换行符
#include <stdio.h>
#include <unistd.h>
int main ()
{
while(1)
{
printf("hello imawode\n");
sleep(1);
}
return 0;
}
此时再进行编译运行则就会以1秒的间隔输出内容了
调试技巧
printf("%s‐‐%s‐‐%d\n" , __FILE__ , __FUNCTION__ , __LINE__ );
在程序中不同的位置加入此语句可以看到此时运行到哪个文件的哪一个函数了,借此可以看到是否卡死
GCC编译器
gcc编译器的部分用途,这些都是比较常用的方式
$ gcc Hello.c // 使用gcc 编译 Hello.c 并且默认生成一个名为 a.out的可执行文件
$ gcc Hello.c ‐o TieZhu // 使用gcc 编译Hello.c 并且指定生成名字为TieZhu 的可执行文件
$ gcc Hello.c ‐o TieZhu ‐v // ‐v 输出编译的信息, 包括头文件寻找的路径
$ gcc Hello.c ‐o TieZhu ‐I/mnt/d/ ‐v // ‐I 指定头文件寻找的路径(在原本默认的基础上添加)
$ gcc Hello.c ‐Wall // 输出所有的警告
VIM编辑器
vim编辑器有三种模式:命令模式、编辑模式、尾行模式
命令模式:可进行部分命令,例如复制剪切删除等等
编辑模式:可以编辑文件内容
尾行模式:用于保存退出等等操作
默认使用vim打开文件处于命令模式
输入 ‘:’ 则会进入尾行模式
尾行模式部分常用操作
w ‐‐> 保存文件(写入到磁盘)
q ‐‐> 退出
! ‐‐> 强制退出
q! ‐‐> 不保存退出
wq ‐‐> 保存并退出
w Even.c ‐‐> 把当前文件另存为 Even.c
尾行模式下按esc即可退出尾行模式回到命令模式
在命令模式下输入以下字母进入编辑模式
i : 在光标的前面进行插入(编辑)
I : 光标跳到当前行的行首进行插入
o: 在当前光标的下一行新建一行进行插入
O: 在当前光标的上一行新建一行进行插入
a: 在光标的后面进行插入(编辑)
A: 光标跳到当前行的行尾进行插入
编辑模式下按esc即可退出尾行模式回到命令模式
命令模式常用命令
标注输出(格式化输出)
概念:终端对应的就是标准输出的设备文件,如果往该文件中输出内容则可以称为标准输出
注意事项
% 必须有的,格式化的开头标记
- 对齐的方式, 向左对齐(空格在右) ,如果没有则是向右对齐
m.n m指的域宽(总共需要的字符数),n 指的是精度(小数点后位数默认精度为6),m 的值如果比实际数据小则按实际输出,反之则用空格来填补
l 指的是 long 表示长整型
h 指的是短整型
格式控制符
进制的整型: %d %md %ld %u (无符号) %lu
八进制: %o %#o # --> 输出进制的符号
十六进制: %x %#x %#X 0x -->表示16进制
字符: %c
字符串: %s
单精度浮点: %f %.nf --> n 表示精度
双精度: %lf
长双精度 : %Lf
地址: %p
printf("%d\n" , 0123 ); // 使用十进制的格式来输出一个八进制数据 0123‐‐>83
//在计算机中输入的数字前加0代表此数字为8进制数
printf("%o\n" , 0123 ); // 使用八进制的格式来输出一个八进制数据 0123‐‐>123