gets与puts的使用,Str系列字符串的使用

1.gets和puts函数

gets函数:用于读取比准输入,类比scanf()函数。
scanf()函数在读字符串时遇到空格就终止读取了
如果要连空格一起读,需要用到gets函数

gets函数格式如下:

char *gets(char *str);

gets 函数从 STDIN(标准输入)读取字符并把它们加载到 str(字符串)中,直到遇到换行符(\n)。
如下例所示,执行后,我们输入"how are you",共 11 个字符,
可以看到 gets 会读取空格,同时可以看到我们并未给数组进行初始化赋值,但是最后有’\0’,
这是因为 gets 遇到\n 后,不会存储\n,而是将其翻译为空字符’\0’。

puts 函数:类似于 printf 函数,用于输出标准输出。puts 函数的格式如下:

int puts(char *str);

函数 puts 把 str(字符串)写入 STDOU(标准输出)。
puts 会将数组 c 中存储的"how are you"字符串打印到屏幕上,同时打印换行,相对于 printf 函数,puts 只能用于输出字符串,同时多打印一个换行符,等价于 printf(“%s\n”,c)。

#include <stdio.h>
//gets 一次读取一行
int main()
{
char c[20];
gets(c);
puts(c);
return 0;
}

在这里插入图片描述

2.str 系列字符串操作函数

str 系列字符串操作函数主要包括 strlen、strcpy、strcmp、strcat 等
strlen 函数:用于统计字符串长度,
strcpy 函数:用于将某个字符串复制到字符数组中
strcmp 函数:用于比较两个字符串的大小,
strcat 函数:用于将两个字符串连接到一起。
各个函数的具体格式如下所示:

#include <string.h>
size_t strlen(char *str);
char *strcpy(char *to, const char *from);
int strcmp(const char *str1, const char *str2);
char *strcat(char *str1, const char *str2);

对于传参类型 char*,直接放入字符数组的数组名即可。

【例】str 系列字符串操作函数的使用

#include <stdio.h>
#include <string.h>
int mystrlen(r char c[]) {
int i = 0;
while (c[i++]);
return i - 1;
}
//strlen 统计字符串长度
int main() {
int len; //用于存储字符串长度
char c[20];
char d[100] = "world";
gets(c);
puts(c);
len = strlen(c);
printf( "len=%d \n" ", len);
len = mystrlen(c);
printf(n "mystrlen len=%d \n" ", len);
strcat(c, d);
strcpy(d, c); //c 中的字符串复制给 d
puts(d);
printf(d "c?d %d \n" ", strcmp(c, d));
puts(c);
return 0;
}


下图所示为我们输入"hello"后的执行结果,
通过 strlen 函数计算的字符串长度为 5,
我们自己写的函数就是 strlen 函数的计算原理,即通过判断结束符来确定字符串的长度。
strcpy 函数用来将字符串中的字符逐个地赋值给目标字符数组。
例中我们将 c 复制给 d,
就是将 c 中的每个字符依次赋值给 d,也会将结束符赋值给 d。
注意,目标数组一定要大于字符串大小,即 sizeof(d)>strlen©,否则会造成访问越界.

在这里插入图片描述
strcmp 函数用来比较两个字符串的大小
由于字符数组 c 中的字符串与 d 相等,所以这里的返回值为 0。
如果 c 中的字符串大于 d ,那么返回值为 1;
如果 c 中的字符串小于 d,那么返回值为−1。
如何比较两个字符串的大小呢?
具体操作是从头开始,比较相同位置字符的 ASCII码值,
若发现不相等则直接返回,否则接着往后比较。
例如,strcmp(“hello”,“how”)的返回值是−1,即"hello"小于"how",
因为第一个字符 h 相等,
接着比较第二个位置的字符,e 的 ASCII 码值小于 o 的,然后返回−1。
strcat 函数用来将一个字符串接到另外一个字符串的末尾。
例中字符数组 c 中存储的是"hello",
我们将 d 中的"world"与 c 拼接,最终结果为"helloworld"。
注意,目标数组必须大于拼接后的字符串大小,即 sizeof©>strlen(“helloworld”)。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rock Hang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值