
10.2.1 单字符的输入输出
putchar
//放字符 放到标准输出里面“那个黑黑的窗口里面”
int putchar(int c);
输出的不是char类型而是int类型,但是不能接收4字符
向标准输出写一个字符(在标准输出里输出一个字符)
返回类型也是int,返回写了几个字符,EOF(-1)表示写失败,返回1为正常(正常情况下不需要去检查putchar的返回)
getchar
//读入字符
int getchar(void);
从标准输入读入一个字符
返回其读到的字符。返回类型也是int,这是为了返回EOF(-1),来表示输入结束。
例子:
#include<stdio.h>
int main(int argc,char const *argv[])
{
int ch;
while((ch = getchar()) != EOF)
{
putchar(ch);
}
printf("EOF\n");
return 0;
}

输入Crtl+C时,没有输出CtrlC,也没有输出EOF,说明是强制退出
输入Ctrl+D( (Mac上是CtrlD,而Windows是Ctr lZ)时入输出EOF,说明此时输入结束
什么时候为止?回车
既然getchar只读一个字符,我们输入一个字符之后它并没有自动终止读入,而是在用户按下回车之后才终止。

shell的工作原理
在我们的程序和我们输入与屏幕之间有shell代为处理数据,用户输入之后,shell会将输入的内容填入缓冲区,然后进行行编辑处理。shell把缓冲区里的东西输进程序。
输入的数据会在不同程序下对其进行不同的处理。
CtrlC会让shell直接关闭程序
而CtrlD在shell收到后,在末尾填一个-1,程序读到-1,程序就正常结束了。
遇到\0,则等待用户继续输入,因此程序并不会停止读入。
10.2.2 strlen函数
标准库string.h
使用字符串函数的时候,需要加上头文件
#include<string.h>

strlen
//告诉你字符串的长度
size_t strlen (const char *s) //用const保护字符串
可以返回s的字符串长度(不算结尾的0,sizeof会计算0)。
里边的const表示这不会对字符串进行任何更改。
例子:
#include<stdio.h>//输入输出头文件
#include<string.h>//要使用字符串函数 加的头文件
int main(int argc,char const *argv[])//main的标准定义
{
char a[] = "Hello";
printf("strlen = %lu\n",strlen(a));//5
printf("sizeof = %lu\n",sizeof(a));//6 还读到了反斜杠0(结尾)
return 0;
}
自己写 代替它的功能?
#include<stdio.h>
#include<string.h>
//遍历数组,当数组元素为0时表示结束,用下标代替元素个数,得到字符串长度
size_t mylen(const char* s)//size_t啥意思 int可以理解
{
int index = 0;
while(s[index] != '\0')
{
index++;
}
return index;
}
size_t
size_t中的t是type(类型)的意思。
size_t的意思是size of type,即某种类型的大小(字节数)。
size_t是C内部预定义的一个类型:typedef unsigned int size_t
因此这句代码相当于:unsigned int size=sizeof(long long);
sizeof()函数的功能就是求变量在内存中所占的字节数。
因此,这句话的意思是将long long类型在内存中所占的字节数赋值给无符号整型变量size。