怎样将字符串读入栈c语言程序,C语言字符和字符串操作

**C语言中字符和字符串的使用是一个重点也是一个难点,自己学C也有一段时间了,在这里总结下。自己也复习和巩固下知识点**

1, 概念:

字符是以单引号括起来的单字符,一定要注意单引号和单字符。例如:'a'就是一个合法的单字符,而'ab'的写法就是错误的;单字符用%c进行输出。

字符串:用双引号括起来的多个字符,在C语言中没有字符串变量,可以用字符数组和字符串指针来保存字符串。

#include

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); // A

putchar('A'); // A

int 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则返回值为正,否则返回值为负。

你可能感兴趣的