本文共 2954 字,大约阅读时间需要 9 分钟。
在C语言中,字符串和字符数组的概念经常会被混淆,但它们实际上有着明显的区别。
char
。字符数组可以通过两种方式初始化:
char array[] = { 'a', 'b', 'c', 'd', '\0' };
char array[] = "C program";
-编译器会在字符串末尾自动添加null terminator。-字符串存放在数据段的常量区,无法进行写改操作。-局部变量存放在栈区,静态变量或全局变量存放在数据段。
char a[10];scanf("%s", a);
char a[] = "hello";printf("%s\n", a);
在C语言中,可以用指针来指向字符串:
char *ptr = "C Language";
char array[] = "hello";char *ptr = array; // ptr指向栈区中的字符串
#include#include int main() { char local_array[5]; // 此处不初始化,值为随机 char array1[] = { 'h', 'e', 'l', '\0', 'l', 'o', '\0' }; char array2[] = "hello"; char array3[] = "hello"; char array4[5] = "hello"; char array5[6] = "hello"; printf("array1: %s size: %d length: %d\n", array1, sizeof(array1), strlen(array1)); printf("array2: %s size: %d length: %d\n", array2, sizeof(array2), strlen(array2)); printf("array3: %s size: %d length: %d\n", array3, sizeof(array3), strlen(array3)); printf("array4: %s size: %d length: %d\n", array4, sizeof(array4), strlen(array4)); printf("array5: %s size: %d length: %d\n", array5, sizeof(array5), strlen(array5));}
输出示例:
array1: hel size: 7 length: 3array2: hello size: 6 length: 5array3: hello size: 6 length: 5array4: hellohallo size: 5 length: 5array5: hello size: 6 length: 5
C语言提供了丰富的字符串处理函数,主要包括以下几类:
输入输出函数:
puts(char *strPtr)
: 将字符串输出到标准输出。gets(char *strPtr)
: 从标准输入读取字符串。字符串长度函数:
int strlen(char const *strPtr);
字符串拷贝函数:
char *strcpy(char *des, char *src);char *strncpy(char *des, char const *src, int size);
字符串连接函数:
char *strcat(char *str1, char const *str2);char *strncat(char *str1, char const *str2, int size);
字符串比较函数:
int strcmp(char const *str1, char const *str2);int strncmp(char const *str1, char const *str2, int size);
字符串分隔函数:
char *strtok(char *str, char const *delimiters);
字符串子串截取函数:
char *strstr(char *s1, char const *s2);
标准算术和随机数函数:
int abs(int value);long labs(long value);rand(void); // 生成伪随机数srand(unsigned int seed); // 设置随机数种子
数学函数:
double sin(double angle);int pow(double x, double y); // 指数函数
时间日期函数:
time_t time(time_t *date_time);char *ctime(const time_t clock); // 时间转换为字符数组
#include#include int main() { char sentence[30] = {'\0'}; // 初始化为空字符串 printf("请输入一句话:"); fgets(sentence, sizeof(sentence), stdin); int total = strlen(sentence); int words = 0; int i; for (i = 0; i < total; ++i) { if (sentence[i] == ' ' && i != 0) { ++words; // 单词分隔判定 } } if (words == 0) { printf("请提供多于一个单词的输入\n"); return 0; } printf("平均单词长度:%.1f\n", (float)total / words); return 0;}
转载地址:http://mqqtz.baihongyu.com/