开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第30天,点击查看活动详情
字符串输入输出
putchar(输出)
putchar(int c);
向标注输出写一个字符,
返回写了几个字符,EOF(-1)表示写失败。
getchar(输入)
getchar(void);
从标准输入读入一个字符,
返回类型是int,是为了返回EOF(-1)。
windows->ctrl-Z
Unix->ctrl-D
在键盘与我们所写的代码之间还有一个程序,称其为终端也叫shell,用户在键盘对程序进行输入,会经过shell的处理再交给我们所写的程序,当我们输入时,会在shell中形成行编辑的工作。如果输入123回车345回车,会在行编辑中依次排开,然后在最后加一个结尾示意输入结束,如果是一个getchar,getchar会依次读入123,如果是scanf且为%d,那么scanf会读入345这样的一个整数,然后在最后遇到示意结束的结尾(比如说\0),程序会继续等用户的输入。如果此时,键盘键入CTRL-Z(Windows),会在行编辑最后形成一个标志-1(或者别的标志),再读入便会读到-1的结果。
如果键入CTRL-C,shell会直接将代码关掉,停止运行。
字符串函数
需要#include<string.h>
strlen、strcmp、strcpy、strcat、strchr、strstr。
strlen
size_t strlen(const char*s);
返回s字符串的长度(不包括结尾的0)
例:
char line[]="Hello";
printf("strien=%lu\n",strlen(line));
strcmp
int strcmp(const chars1,const chars2);
比较两个字符串,返回:
0:s1==s2
1:s1>s2
-1 :s1< s2
例:
char s1[]="abc";
char s2[]="abc";
printf("%d\n",strcmp(s1,s2));
但是要注意:printf("%d\n",s1==s2);的意思是比较s1和s2的地址。
实际上,如果s1和s2不相等输出会显示差值,若s1为"abc",s2为"Abc",用此函数会输出32。
strcpy
charstrcpy(charrestrict dst,const char *restrict src);
把src的字符串拷贝到dst(会覆盖掉dst原来的内容),restrict表明dst和src不重叠(C99);
返回dst:为了能链起代码来。
复制一个字符串
chardst=(char)malloc(strlen(src)+1);
strcpy(dst,src);