30天学会C语言: Day 2-世界泥豪

今天要让电脑说泥豪

printf()

stdio.h 中的函式,可以把 字串 显示到程序的视窗上

字串和字元

  • 字元(Character)
    在电脑中的文字符号被称为 字元,任何语言中的字母、符号、空格或单个数字都叫做字元,在程序码中用英文的单引号''标示
    例如:'a', 'A', '0', ' ', '+', 'α', 'β', '早', '安', '@', '#', 'あ', '한', 'Л'
    不过C语言能完整支援的字元有限,所以之後只会讨论英、数的文字和符号
  • 字串(String)
    代表的是 不定长度 (字数)的文字资料,也就是说一个字串可以由 单个或多个字元 组成,也可以 不包含任何字元(称为空字串),在程序码中用英文的双引号""标示
    例如: "Hello, World!", "0123", "string", "09/18", "This is a string.", "a", ""

後面的文章会对字串和字元有更详细的介绍(挖坑+1),现在只要先知道透过 printf() 显示的内容要用 "" 标注就可以了

显示单行文字

在视窗上显示 Hello, World! 的字样

#include<stdio.h>

int main(){
	printf("Hello, World!");
	return 0;
}

执行结果:

因为显示的内容只能是字串,如果要显示纯数字的内容,也必须用双引号标示

#include<stdio.h>

int main(){
	printf("20210915");
	return 0;
}

printf() 会像是打字机一样,把字串中的字元一个接着一个的打到视窗上,所以如果有多个 printf(),显示的内容会接在一起,不会自动换行

#include<stdio.h>

int main(){
	printf("AAA");
	printf("BBB");
	return 0;
}

多行文字

因为 printf() 没有换行的功能,所以如果要显示多行文字,要在换行的地方加上 换行符号
C语言以及大部分程序语言的换行符号用 \n 表示

在第一个字串的结尾加上 \n,第二个字串会被显示在第二行

#include<stdio.h>

int main(){
	printf("ABC\n");
	printf("123");
	return 0;
}

或是在第二个字串的开头加上 \n,效果一样

#include<stdio.h>

int main(){
	printf("ABC");
	printf("\n123");
	return 0;
}

也可以把两行内容放在同一个字串中,用一个同 printf() 显示

#include<stdio.h>

int main(){
	printf("ABC\n123");
	return 0;
}

连续换行两次,可以在两行文字之间空一行

#include<stdio.h>
#include<stdlib.h>

int main(){
	printf("ABC");
	printf("\n\n");
	printf("123");
	return 0;
}

也可以写成

#include<stdio.h>

int main(){
	printf("ABC\n\n");
	printf("123");
	return 0;
}

或是

#include<stdio.h>

int main(){
	printf("ABC\n\n123");
	return 0;
}

接下来要示范的是光速填坑

逃脱字元

反斜线 \ 在C和大多数语言中作为 逃脱字元,代表 \ 後的下个字元要特别处理
所以当 \ 後面接上不同的文字或符号的时候可以表示不同的字元,我把它们分成两类

程序语言中,符号已经有定义

如果某个符号在程序语言中已经有自己的定义,就需要用跳脱字元来表示,因为每个语言有用到的符号都不一样,所以每个语言略有不同
在C语言的字串中,常用的有:

  • 双引号 " 代表的是字串的开始和结束,所以在字串内容中双引号要用 \" 表示
  • 反斜线 \ 是跳脱字元,它会因为後面的字元不同而代表不同的意义,所以字串内容中反斜线要用 \\ 表示

另外百分比 % 在字串中代表 预留位置(挖坑+1),在字串中百分比符号要用 %% 表示

#include<stdio.h>

int main(){
	printf("Strings are  surrounded by \"quotation marks\".\n");
	return 0;
}

打不出来的符号

前面用到的换行符号 \n 就是最常用的一种
另外还有:

  • \t: 自动对齐的空格
      #include<stdio.h>
    
      int main(){
      	printf("12\t123\n");
      	printf("123\t12\n");
      	return 0;
      }
    

    如果把 \t 换成一般的空白,显示的内容不会对齐
      #include<stdio.h>
    
      int main(){
      	printf("12 123\n");
      	printf("123 12\n");
      	return 0;
      }
    
  • \a: 铃声,执行的时候会拨放系统音效
  • \b: 游标(下个文字开始显示的位置)倒退一格,之後再显示的内容会覆盖之前的内容
      #include<stdio.h>
    
      int main(){
      	printf("123\b456\n");
      	return 0;
      }
    
  • \r: 游标倒退到这行的开头,如果後面还有文字的话原本开头的文字会被吃掉
      #include<stdio.h>
    
      int main(){
      	printf("1234\r567");
      	return 0;
      }
    
  • \0 代表字串的结束,也就是下一个坑

puts()

puts() 也可以把字串显示到萤幕上,而且会在结尾自动换行,但没有格式化字串的功能

#include<stdio.h>

int main(){
	puts("ABC");
	puts("123");
	return 0;
}


<<:  Day 3. 配置写VR的Unity设定

>>:  30天学会 Python: Day 2-input啦!

React.js 职场实战!图片 Lazy Loading

一天的开始 你是新创公司 Imager 底下的前端工程师,Imager 提供的服务非常简单,就是能...

[Day4] Face Detection - 使用Google Cloud Vision API

reference: medium - Filtering Image content with ...

【资料结构】树_实作-二元树的前中後追踪&&最大最小值&树叶

tree-二元树的前中後追踪&&最大最小值&树叶 实作练习 说明 实习课的一...

【30天Lua重拾笔记32】进阶议题: LuaRocks & LuaDist

同步发表於个人网站 LuaRocks LuaRocks是类似npm、pip这样的套件管理工具,你可...

Day3 HTML、CSS、JavaScript基本架构

【HTML】 HTML是一种用来建构网页的标记语言,而非程序,可以将网页想像成一页文件,而这份文件内...