C语言程序设计(26)

75 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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);