C编程中的字符串
时间:2020-02-23 14:32:06 来源:igfitidea点击:
C编程中的字符串是一个字符数组,在末尾索引后附加一个NULL字符('\ 0')。
与字符数组不同,c字符串是由编译器视为单个项目的一系列字符。
但是就像数组一样,字符串也可以与其索引一起遍历。
1.用C声明字符串
用C声明字符串与使用字符数组的情况完全相同。
char String_Name [元素数量];
注意:这里的元素数量也应包含NULL字符('\ 0'`)。
char demo[10];
2. C语言中的字符串初始化
C中的字符串可以用不同的方式初始化。
通过指定单个字符(如下面的示例2和4)来创建字符串时,还应确保将NULL字符添加到其中。
- char string [20] =" theitroad";
- char string [20] = {'i','g','i','f','t','i','d','e','a','\ 0 '};
- char string [] =" theitroad";
- char string [] = {'i','g','i','f','t','i','d','e','a','\ 0 '};
对于第3和第4种情况,最初并未提及元素的数量。
在这些情况下,默认情况下,数组的大小设置为元素总数(包括" \ 0")。
3.在C中遍历一个字符串
例如,让我们看一下如何像数组一样遍历字符串。
char string[20]="theitroad"; char ch; int i=0; ch=string[i]; while(ch!=NULL) { printf("%c",ch); i++; ch=string[i]; }
输出:
theitroad
4.用C读取字符串(使用scanf()gets()或者fgets())
scanf()或者gets()函数都可用于从用户读取字符串。
但是,不幸的是,scanf()
函数仅读取一个字符序列,直到遇到换行符,空格或者制表符等为止。
而gets()
读取字符序列,直到换行符(或者Enter键) 。
另外,fgets()
被用来避免由于gets()
导致的缓冲区溢出。
让我们看一下上述所有功能的工作原理。
例如,
#include<stdio.h> int main() { char string_input[20]; printf("Enter the string: "); scanf("%s", string_input); puts(string_input); }
输出:
使用scanf()输入
如您所见,由于字符串之间存在空格,所以scanf()
只接受第一个空格之前的字符。
这可以通过gets()
函数避免。
#include<stdio.h> int main() { char string_input[20]; printf("Enter the string: "); gets(string_input); puts(string_input); }
输出:
使用gets()输入
再次使用fgets()
函数,
#include<stdio.h> int main() { char string_input[20]; printf("Enter the string: "); fgets(string_input,sizeof(string_input),stdin); puts(string_input); }
5. C字符串库函数
标准的C库包含许多内置的面向字符串的函数。
所有这些功能都在string.h
头文件中。
因此,包含string.h
头文件对于简化字符串操作将很有用。
一些常见的函数是
strlen(string)
–此函数返回传递的字符串的长度或者字符串中元素的总数,- strcmp(string1,string2)–这个函数比较两个字符串。
如果两个字符串相等,则返回0,否则返回非零值, - strcat(string1,string2)–这个函数连接两个给定的字符串。
它将string2追加到string1的末尾,并将结果存储到string1, strcpy(string1,string2)
–此函数将string2的内容复制到string1中,strrev(string)
-这个函数反转里面的字符串,- 还有很多。