C语言实现从屏幕上获取字符串,C语言 > 字符串和字符串函数

输入

gets() 函数 :

1.gets() 从标准输入设备读取字符串,以回车结束读取,使用'\0'结尾,回车符'\n'被舍弃没有遗留在缓冲区。

2.可以用来输入带空格的字符串。

3.可以无限读取,不会判断上限,因此使用gets不安全,可能会造成溢出。

fgets() 和 fputs() 函数 :

1.fgets函数的第2个参数指明了读入字符的最大数量.如果该参数是n, 那么fgets会读入n-1 个字符,或者读到第一个换行符为止

2.如果fgets函数读到一个换行符, 会储存在字符串中

3.fgets的第三个参数指明了要读入的文件

4.fputs不在字符串的末尾添加换行符

s_gets()函数 :

char *s_gets(char *st, int n){

char * ret_val;

char *find;

ret_val = fgets(st, n, stdin);

if (ret_val){

// while (*st != '\n' && *st != '\0'){

// st++;

// }

find = strchr(st, '\n');

if (*find){

*find = '\0';

} else {

while (getchar() != '\n'){

continue;

}

}

}

return ret_val;

}

scanf()函数 :

scanf() 和 gets() 函数类似 , 也存在一些潜在的缺点 . 如果输入的内容过长 , scanf() 也会导致数据溢出

输出:

puts()函数 :

使用方法 : 把字符串的地址作为参数传递给它就可以

puts() 会自动添加换行符 , 切必须要有空字符 , 因为只有空字符它才会停止

fputs()函数 :

fputs(char *, stdout);

fputs()不会在输出的末尾添加换行符

(puts应和gets配对使用 , fputs与fgets配对使用);

自定义输入/输出函数 :

while (string != ‘\0’)

putchar(*string++);

字符串函数 :

strlen() : 用于统计字符串的长度

strcat() : 用于拼接字符串 , 函数接受两个字符串作为参数 , 把第2个字符串的备份附加在第1个字符串末尾 , 并把拼接形成的新字符串作为第1个字符串 , 第2个不变

问题 : 无法检查第1 个数组是否能容纳第2个字符串 , 如果分配给第1个数组的空间不够大 , 多出来的字符就会溢出 (可以用strlen()函数 strlen(a) + strlen(b) + 1 <= SIZE)

strncat() : 该函数的第3个参数制定了最大添加字符数 , 如strancat(a, b, 13) 将把b的内容附加给a , 在加到第13个字符或遇到空字符时停止 , 所以a应该足够大 , 以容纳原始字符 + 添加在后面的13个字符 + 末尾的空字符

strcmp() : 比较字符串的内容 , (比较的是字符串 , 不是字符 , 也不是字符串的地址) , 如果两个字符串参数相同 , 就返回0 , 否则返回非零值

strncmp() : 可以限定只比较几个字符

strcpy() : 用来拷贝整个字符串 , strcpy的参数顺序 , 第1个是目标字符 , 第2个是源字符

其他属性 : 第一 , strcpy()返回类型是char * , 该函数返回的是第1个参数的值 , 即一个字符的地址 , 第二 , 第1个参数不必指向数组的开始

char *strchr(const char *s, int c)

功能:查找字符串s中首次出现c字符的位置

说明:返回首次出现c的位置的指针,返回的地址是被查找的字符串指针开始的第一个与c相同字符的指针,若s中不存在c则返回NULL。。。。

返回值:成功返回要查找的字符第一次出现的位置,否则返回NULL。。。。

C语言中返回字符串函数的四种实现方法

转自C语言中返回字符串函数的四种实现方法 其实就是要返回一个有效的指针,尾部变量退出后就无效了. 有四种方式: 1.使用堆空间,返回申请的堆地址,注意释放 2.函数参数传递指针,返回该指针 3.返回函 ...

C语言的常用字符串操作函数(一)

一直做的是单片机相关的程序设计,所以程序设计上更偏向底层,对于字符串的操作也仅限于液晶屏幕上的显示等工作,想提高下字符串操作的水平,而不是笨拙的数组替换等方式,翻看帖子发现C语言的字符串操作函数竟然这 ...

R语言中的字符串处理函数

内容概览   尽管R是一门以数值向量和矩阵为核心的统计语言,但字符串有时候也会在数据分析中占到相当大的份量.   R语言是一个擅长处理数据的语言,但是也不可避免的需要处理一些字符串(文本数据).如何高 ...

【R笔记】R语言中的字符串处理函数

内容概览 尽管R是一门以数值向量和矩阵为核心的统计语言,但字符串同样极为重要.从医疗研究数据里的出生日期到文本挖掘的应用,字符串数据在R程序中使用的频率非常高.R语言提供了很多字符串操作函数,本文仅简 ...

【C语言】10-字符和字符串常用处理函数

一.字符处理函数 下面介绍的两个字符处理函数都是在stdio.h头文件中声明的. 1.字符输出函数putchar putchar(65); // A putchar('A'); // A int a ...

C语言中关于字符串的一些常用函数

使用以下时应当在头文件中加入string.h getch()为当你键入任何一个值时,返回但是并不显示,立马编译结束,返回的是asc码  getchar():当你键入回车之后才算是输入结束,并且可以用p ...

go语言之进阶篇字符串操作常用函数介绍

下面这些函数来自于strings包,这里介绍一些我平常经常用到的函数,更详细的请参考官方的文档. 一.字符串操作常用函数介绍 1.Contains func Contains(s, substr st ...

c语言实现常见字符串函数strchr strstr strcmp atoi itoi(字符串换成整数)

好久没有更新博客了,刚刚出炉练练手的程序如下,很简单,没有考虑过多复杂的东西,有好的想法,欢迎指教: 字符查找函数: char *my_strchr(const char *s,int c) { ch ...

实现C语言字符串操作的库函数 包括基本的字符串复制 字符串长度 字符串比较等多种函数(C代码)

头文件 "mystring.h" #ifndef _MYSTR_H #define _MYSTR_H #include #include

随机推荐

洛谷P2320 [HNOI2006]鬼谷子的钱袋

https://www.luogu.org/problem/show?pid=2320#sub 题目描述全是图 数学思维,分治思想 假设总数为n 从n/2+1到n的数都可以用1~n的数+n/2表示出来 ...

valgrind 生成mysqld调用图之 select now()跟踪

1.mysqld起动方式: 1.mysqld以root用户运行 valgrind --tool=callgrind --separate-threads=yes  --trace-children=y ...

数学概念——H 最美素数

H - 数论,晒素数 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit S ...

docker制作node程序镜像:

准备: 需要5个文件 新建一个docker文件夹 1 .ignore git忽略文件用的 2 pakage.json 安装NODE程序的 也可以直接拷贝进 docker文件加 3 node环境 lin ...

C语言极易出错的地方(更新中)

1 时刻记住C语言风格的字符串是以'\0'结尾,无论是在内存的分配还是字符串的赋值上都需要注意

IIS7中JS、CSS、Image无法显示和加载解决方案

前两天把机器从Windows7升级到Windows10,IIS也跟着升级了,在获取项目搭载IIS上发现原有的页面中所有的JS.CSS.Image都无法访问,提示500错误,起初以为是IIS没有装好 重 ...

JSON对象转换成JSON字符串

1.问题背景 有一个json对象,需要将其转换成json字符串 JSON.stringify(obj) 2.实现源码 /p>

iOS下FMDB的多线程操作(二)

上一篇记录不使用FMDatabaseQueue来使用多线程,这一篇记录一下使用FMDatabaseQueue的方式. 需要注意的时queue操作中不能嵌套queue操作,否则会各种错误. 当使用FMD ...

RCNN论文细节

写在前面: 本系列笔记主要记录本人在阅读过程中的收获,尽量详细到实现层次,水平有限,欢迎留言指出问题~ 这篇文章被认为是深度学习应用于目标检测的开山之作,自然是要好好读一下的,由于文章是前些日子读的, ...

.NET Core +NuGet 创建打包发布自己的类库包

1. 创建类库项目 你可以使用现有的 .NET 类库项目用于要打包的代码,或者创建一个简单的项目,.NET CORE 2.1 项目的 类库如下所示: NugetDemo.class using Sys ...

你可能感兴趣的