ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言字符串

2022-01-04 21:35:54  阅读:195  来源: 互联网

标签:ch puts C语言 fgets printf 字符串 gets


一、表示字符串和字符串I/O

字符串是以空字符(\0)结尾的插入类型数组。
字符串常量属于静态储存类别。
字符串储存在静态储存区。

1、字符串数组

char *str[4];

二、字符串输入

输入字符串首先要分配空间。输入的长度应该是字符串的的长度(一些较老的版本,是输入的长度应该是字符串的的长度+1,‘+1’是给字符串结束符空字符(\0)预留的)。

1、gets()函数(和puts())

gets()读取郑航输入,知道遇到换行符,然后丢弃换行符,储存其余字符,并在这些字符的结尾添加一个空字符十七成为一个C字符串。经常和puts()配合使用。
gets函数只知道数组的开始处,并不知道数组中有多少个元素,如果输入的字符串过长,会导致缓冲区溢出,及多余的字符超出了指定的目标空间。
下面是正常的gets()

#include <stdio.h>

int main()
{
        char ch[100 + 1]; 

        puts("Enter a string, please:");    
        gets(ch);
        printf("%s\n", ch);
        printf("------------------\n");
        puts(ch);
    
        return 0;
}

在这里插入图片描述
下面是正常的gets()输入的字符串长度大于定义的字符串长度

#include <stdio.h>


int main()
{
        char ch[3 + 1]; 

        puts("Enter a string, please:");    
        gets(ch);
        printf("%s\n", ch);
        printf("------------------\n");
        puts(ch);
    
        return 0;
}

在这里插入图片描述

2、fgets()函数(和fputs())

fgets()函数通过第二个参数限制读入的字符数解决溢出的问题。
1、fgets()函数的第二个参数指明了读入字符的最大数量。如果该参数是n,那么fgets()读取的就是n-1个字符,或者读到遇到的一个换行符为止。
2、如果fgets()读到一个换行符,会把他储存在字符串中。这点与gets()不通,gets()会丢弃掉换行符。
3、fgets()函数的第三个参数指明要读入的文件。如果读入从键盘输入的数据,则以stdin(标准输入)作为参数,改标识符定义在stdio.h中。

fgets()函数通常和fputs()搭配使用。fgets()函数的第二个参数要指明它写入的文件。如果现实在计算器显示器上,应使用stdout(标准输出)作为该参数。
fgets()返回的是字符指针,内容是输入的内容。

#include <stdio.h>

#define SIZELEN 8

int main()
{
        char ch[SIZELEN];
    
        puts("Enter a string, please.");
        fgets(ch, SIZELEN, stdin);
        printf("printf:----------------------\n");
        printf("%s", ch);
        printf("fputs:----------------------\n");
        fputs(ch, stdout);
        printf("put:----------------------\n");
        puts(ch);
        printf("----------------------\n");
    
        return 0;
}

在这里插入图片描述

3、gets_s()函数

get_s(ch, length);
1、get_s()只从标准输入中读取数据,所以不需要第三个参数。
2、如果gets_s读到换行符,会丢弃它而不是储存它。
3、如果gets_s()读到最大字符都没有读取到换行符,会执行以下几步。首先把目标数组中的首字符设置为空字符,读取并丢弃随后的输入直至换行符或文件结尾,然后返回空指针。接着,调用依赖实现的“处理函数”(或你选择的其他函数),可能会终止或退出程序。

标签:ch,puts,C语言,fgets,printf,字符串,gets
来源: https://blog.csdn.net/qq_43085982/article/details/122271531

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有