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()函数 :

 1 char *s_gets(char *st, int n){
 2     char * ret_val;
 3     char *find;
 4     ret_val = fgets(st, n, stdin);
 5
 6     if (ret_val){
 7         // while (*st != ‘\n‘ && *st != ‘\0‘){
 8         //     st++;
 9         // }
10         find = strchr(st, ‘\n‘);
11
12         if (*find){
13             *find = ‘\0‘;
14         } else {
15             while (getchar() != ‘\n‘){
16                 continue;
17             }
18         }
19     }
20     return ret_val;
21 }

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。。。。

时间: 2024-10-31 11:35:36

C语言 > 字符串和字符串函数的相关文章

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

一直做的是单片机相关的程序设计,所以程序设计上更偏向底层,对于字符串的操作也仅限于液晶屏幕上的显示等工作,想提高下字符串操作的水平,而不是笨拙的数组替换等方式,翻看帖子发现C语言的字符串操作函数竟然这样丰富而实用,在此记录,已备后用. No.1 strlen():字符串长度计算函数 应用实例: 1 #include<stdio.h> 2 #include<string.h> 3 4 char TextBuff[] = "Hello_My_Friend!"; 5

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

本文目录 一.字符处理函数 二.字符串处理函数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略. 一.字符处理函数 下面介绍的两个字符处理函数都是在stdio.h头文件中声明的. 1.字符输出函数putchar putchar(65); // A putchar('A'); // A int a = 65; putchar(a); // A 上面的3种用法,输出的都是大写字母

C语言学习笔记:19_数组-字符数组与字符串(常用字符串函数)

/* * 19_数组-字符数组与字符串.c * * Created on: 2015年7月7日 * Author: zhong */ #include <stdio.h> #include <stdlib.h> #include <string.h> /** *一:字符数组:就是存放字符的char[]数组 * 由于c语言中没有像java,C#中的String(字符串),只有存放字符 的字符型数组当字符串使用(java中的String类也是对字符数组进行封闭的). * *

【C语言】请实现字符串循环右移函数。列如字符串“abcdefghi”向右移2位就是“hiabcdefg”

// 请实现字符串循环右移函数.列如字符串"abcdefghi"向右移2位就是"hiabcdefg" // 函数原型为:void RightLoopMove(char *pstr,unsigned short steps) #include <stdio.h> #include <assert.h> #include <string.h> void severse(char *p,char *q) //字符串翻转 { char t

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

使用以下时应当在头文件中加入string.h getch()为当你键入任何一个值时,返回但是并不显示,立马编译结束,返回的是asc码  getchar():当你键入回车之后才算是输入结束,并且可以用putchar()显示第一个字符,返回的是asc码  puts()将一个字符串(仅一个)输出到终端,可以包含转义符  gets();从终端输入一个字符串到字符数组,并且得到一个函数值,该函数值为该字符数组的起始地址  strcat(str1,str2);string catenate 字符串连接函数,

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

一.字符处理函数 下面介绍的两个字符处理函数都是在stdio.h头文件中声明的. 1.字符输出函数putchar putchar(65); // A putchar('A'); // A int a = 65; putchar(a); // A 上面的3种用法,输出的都是大写字母A. * putchar一次只能输出一个字符,而printf可以同时输出多个字符 printf("%c %c %c", 'A', 'B', 'a'); 2.字符输入函数getchar char c; c = g

【语言对比】字符串

字符串是各类语言中一种非常重要的数据结构,事实上大部分的代码都是基于字符串的操作,各个语言对字符串的处理方式,也是我们评价各个语言的一个重要方面. 因为C++库中并没有提供字符串这个数据类型,所以我们以STL中提供的string来进行对比.这里不选择char*进行对比,是因为char*在功能上和其它两种语言差距实在是太大了,基本上不具有对比性,之前一直使用的都是STL,所以这里直接选用STL来对比了. JAVA中选用String及其周边类,它们会作为一个整体进行对比: 而python中的stri

iOS开发入门 ? C语言(字符串、字符串数组、命令行参数)

字符串 1. 概念 用双引号引起来的就是字符串 "a string" //C语言编译器会将两个并列的字符串自动拼接成一个字符串 "a string""another a string" // \是换行连接的标记(一行不够写) "a looooooooooong \ string" 常见ASCII编码: 'A' == 65    'a' == 97    '0' == 48    '\0' == 0 int a[10]; //表

C语言---整型字符串转换

C语言提供了几个标准库函数,能够将随意类型(整型.长整型.浮点型等)的数字转换为字符串.下面是用itoa()函数将整数转 换为字符串的一个样例: # include <stdio.h>    # include <stdlib.h> void main (void)    {    int num = 100;    char str[25];    itoa(num, str, 10);    printf("The number ’num’ is %d and the

C语言中的字符串

1.从概念上讲,C语言中没有字符串数据类型 2.在C语言中使用字符数组来模拟字符串 3.C语言中的字符串是以'\0'结束的字符数组 4.C语言中的字符串可以分配于栈空间,堆空间或者只读存储区 5.字符串的长度就是字符串所包含字符的个数 6.C语言中的字符串长度指的是第一个'\0'字符前出现的字符个数 7.C语言中通过'\0'结束符来确定字符串的长度 注意: strlen返回数为无符号数,两个无符号数相减依然为无符号数. 1.一般情况下,千万不要自行编写C标注库已经提供的函数 2.标准库有时会使用