C语言字符和字符串操作

来源:互联网 发布:淘宝如何通过倒卖赚钱 编辑:程序博客网 时间:2024/05/17 02:45
    **C语言中字符和字符串的使用是一个重点也是一个难点,自己学C也有一段时间了,在这里总结下。自己也复习和巩固下知识点**1,  概念:字符是以单引号括起来的单字符,一定要注意单引号和单字符。例如:'a'就是一个合法的单字符,而'ab'的写法就是错误的;单字符用%c进行输出。字符串:用双引号括起来的多个字符,在C语言中没有字符串变量,可以用字符数组和字符串指针来保存字符串。
#include <stdio.h>int main(int argc, char *argv[]){    char str[100]="字符数组定义字符串"char  *p="字符串指针定义字符串"return 0;}

注意事项:1,使用字符数组来保存的字符串是保存在栈内存里的,栈内存是可读写,所以可直接改变字符数组。
2,使用字符指针保存的字符串是在常量区的,常量区是只读的不能再改变字符串的值,而且保存的是字符常量的地址。


2,常用的字符串操作函数
1>scanf(“%s”,str);可以用来接收字符串,有点是简单方便,缺点是不能接收空格和tab。
2>gets(str); 也可以用来接收字符串,但是Xcode编译器会报警告,原因是如果定义的数组长度是50,如果输入的正好是50个字符,就没有空间存放字符串的结束符\0,还有接收的字符长度超过50时,就会越界暂用其他存储空间,发生不可预知的错误。
3>fgets();是一个安全的字符串接收函数,格式:fgets(保存位置,长度,接收位置)。
fgets(ch,sizeof(ch),stdin):表示从标准输入stdin接收长度为sizeof(ch)字符串到数组ch,当输入的字符串长度小于数组长度时,出去\0会接收一个换行符\n.
4>字符输出函数putchar()

putchar(65); // Aputchar('A'); // Aint a = 65;putchar(a); // putchar()一次只能输出一个字符

5>字符输入函数getchar()

char c;c = getchar();* getchar函数可以读入空格、TAB,直到遇到回车为止。scanf则不能读入空格和TAB。* getchar一次只能读入一个字符。scanf则可以同时接收多个字符。* getchar还能读入回车换行符,这时候你要敲2次回车键。第1次敲的回车换行符被getchar读入,第2次敲的回车键代表输入结束。

6>返回字符串长度的函数

char str[50]="abc";strlen(str);// 3 计算长度时到\0结束,不包括\0

7>字符串拷贝函数

char str[50] = "abcde";strcpy(str,"feghi");//会把feghi拷贝到字符数组str里,并保留字符串结束符\0.

8>字符串比较函数strcmp
两个字符串按照从左至右的顺序按照ASCII的值比较大小,直到字符不同或遇到\0,如果字符相同则返回0,如果字符串1大于字符串2则返回值为正,否则返回值为负。

0 0