可以对一个字符数组做出修改:

#include 
#include 
int main()
{
        char str[] = "hello world!";
        int len = strlen(str);
        int i;
        for(i = 0; i < len; i++){
                ifstr[i] = 'a'){
                        str[i] = str[i] - 32;
                }
        }
        printf("%sn",str);
}

这代码可以将字符数组中的小写字母转换成大写字母后输出。

1.4、 字符串常量与字符数组的区别

1)字符串常量是一个字符数组,但是内容和长度在初始化时就已经固定了,不可更改;可以通过一个指向字符串常量第一个元素的指针来访问该字符串常量;

2)字符数组是一个用于存放字符的数组,字符数组的值是可以更改的。

二、获取字符串长度

字符串的长度就是这个字符串所包含字符的个数,但是这个长度是不包含 NUL 字符的。C 语言中使用库函数 来计算字符串长度:

size_t strlen(char const *string);

需要注意的是 的返回值类型: 类型,这是一个无符号整数类型。

#include 
#include 
#include 
int main() 
{
    char str1[] = "Hello World!";
    printf("%dn",strlen(str1));
    return 0;
}
/* output:
 * 12
 */

三、复制字符串

C 语言中使用库函数 来进行字符串复制操作:

char *strcpy(char *dst , char const *src);

函数 接收两个字符串参数,并将参数 src 字符串复制到 dst 参数。使用 函数时需要注意的是,必须保证目标字符数组 dst 的长度足够存放源字符数组 src 的内容。如果 src 比 dst 长,则 src 剩余部分的字符仍会被复制,而且它们会覆盖 dst 后面的内存空间的值,如果这除内存空间原本就存放有值,则会导致原本的数据丢失,这样会造成很严重的后果。为了解决这个问题, C 语言中提供了一种更为安全的方式来进行字符串复制操作—— 函数:

char *strncpy(char *dst , char const *src , size_t len);

函数有三个参数,与 函数一样,它也是将 src 字符串中的字符复制到目标数组 dst 中去,但是 函数提供的第三个参数 len 规定了可以向 dst 中写入的字符的个数:

1)如果 (src) > len,则只有 len 个字符被复制到 dst 中去,此时 dst 将不会以 NUL 字节结尾(也就是说, 调用的结果可能不是一个字符串);

2)如果 (src) < len,则 src 中的字符全被复制到 dst 中去,dst 中剩余的部分用 NUL 填充。

四、连接字符串

C 语言中使用库函数 来连接两个字符串:

char *strcat(char *dst,char const *src);

函数 将参数 src 字符串连接到参数 dst 字符串的后面。与 函数一个同样的问题是,必须保证 dst 的剩余空间足够存放下 src 整个字符串。C 语言中提供了 函数来解决这个问题:

char *strncat(char *dst , char const *src , size_t len);

函数从 src 中最多复制 len 个字符到目标数组 dst 后面,并且, 总是在结果字符串后面添加一个 NUL 字节,而且不会像 函数那样对 dst 剩余的空间用 NUL 进行填充。

五、字符串比较

C 语言中使用库函数 来进行字符串比较。 函数会对被比较的两个字符串进行逐字符地比较,直到发现不匹配为止:最先不匹配的字符中较小的那个字符所对应的字符串即被认为小于另一个字符串;如果两者所有字符都匹配,则认为这两个字符串相等;

int strcmp(char const *s1 , char sonst *s2);

该函数的返回值如下:

1)s1 小于 s2,返回一个负值;

2)s1 等于 s2,返回 0;

3)s1 大于 s2,返回一个正值。

char *strncmp(char const *s1 , char const *s2 , size_t len);

可以使用 函数限定比较的字符的个数,返回值与 一样,但是只针对前 len 个字符进行比较。

六、字符串的查找

6.1 查找一个字符

可以使用 函数或 函数来在一个字符串中查找一个特定的字符:

char *strchr(char const *str,int ch);    // int ch 是字符的ASCII码值
char *strrchr(char const *str,int ch);

函数 在字符串 str 中查找字符 ch 第一次出现的位置,并返回一个指向该位置的指针;如果没有找到相应的字符,则返回一个 NULL 指针。函数 在字符串中查找字符 ch 最后一次出现的位置,并返回指向该位置的指针。

6.2 查找任意几个字符

可以使用 函数来查找任何一组字符第一次在字符串中出现的位置:

char *strpbrk(char const *str , char const *group);

这个函数返回一个指向字符串 str 中第一个匹配 group 中任何一个字符的字符位置,如果没有匹配到,则返回一个 NULL 指针。

6.3 查找一个子串

可以使用 函数来在一个字符串中查找一个子串:

char *strstr(char const *str1 , char const *str2);

这个函数在 str1 中查找整个字符串 str2 第一次出现的起始位置,并返回一个指向该位置的指针;如果 str2 并没有完整的出现在 str1 中,则函数将返回一个 NULL 指针;如果 str2 是一个空字符串,则返回str1.

参考资料

《C和指针》

《C程序设计语言 第二版》

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需109元,全站资源免费下载 点击查看详情
站 长 微 信: nanadh666

声明:1、本内容转载于网络,版权归原作者所有!2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。3、本内容若侵犯到你的版权利益,请联系我们,会尽快给予删除处理!