首页 > 其他分享 >字符串

字符串

时间:2024-11-26 18:22:46浏览次数:6  
标签:s1 char str printf 字符串 include

字符串是计算机编程中表示文本数据的一种基本数据类型,在C语言中,字符串是以字符数组的形式实现的,并且每个字符串都以空字符\0结尾,这个空字符标志着字符串的结束。

下面从基础到深入讲解字符串的相关知识点:


1. 字符串的定义与表示

  • 字符串在C语言中使用字符数组表示,例如:

    char str[10] = "hello"; // 包含'h', 'e', 'l', 'l', 'o', '\0'
    

    这里的str可以容纳10个字符,但只用了6个,包括了最后的空字符\0

  • 另一种写法:

    char str[] = "world"; // 长度由编译器自动计算
    

2. 输入和输出字符串

  • 输出字符串:使用printf函数。

    printf("%s", str);
    
  • 输入字符串:使用scanfgets函数(注意安全问题)。

    char str[50];
    scanf("%s", str); // 注意:scanf无法读取空格后的内容。
    

    推荐使用fgets读取一整行,包括空格:

    fgets(str, 50, stdin); // 从输入读取最多49个字符,并添加'\0'
    

3. 常见的字符串操作函数

这些函数都在<string.h>中定义,常用的有:

函数 功能
strlen(s) 计算字符串的长度(不包括\0)。
strcpy(dest, src) 将字符串src复制到dest中。
strcat(dest, src) 将字符串src追加到dest的末尾。
strcmp(s1, s2) 比较两个字符串(返回0表示相等)。
strstr(s1, s2) 查找字符串s2s1中的第一次出现位置。

例子:

#include <stdio.h>
#include <string.h>

int main() {
    char s1[20] = "Hello";
    char s2[] = "World";

    // 字符串拼接
    strcat(s1, s2);
    printf("拼接后: %s\n", s1); // 输出: HelloWorld

    // 计算长度
    printf("长度: %lu\n", strlen(s1)); // 输出: 10

    // 字符串比较
    if (strcmp(s1, s2) == 0) {
        printf("字符串相等\n");
    } else {
        printf("字符串不相等\n");
    }

    return 0;
}

4. 字符串的常见操作

1)反转字符串

#include <stdio.h>
#include <string.h>

void reverse(char str[]) {
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        char temp = str[i];
        str[i] = str[len - 1 - i];
        str[len - 1 - i] = temp;
    }
}

int main() {
    char str[] = "hello";
    reverse(str);
    printf("反转后的字符串: %s\n", str); // 输出: olleh
    return 0;
}

2)查找字符

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "hello";
    char *pos = strchr(str, 'l'); // 查找'l'的第一次出现
    if (pos) {
        printf("字符'l'第一次出现的位置: %ld\n", pos - str);
    }
    return 0;
}

3)分割字符串

使用strtok函数:

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "C,is,a,programming,language";
    char *token = strtok(str, ",");
    while (token) {
        printf("%s\n", token);
        token = strtok(NULL, ",");
    }
    return 0;
}

输出:

C
is
a
programming
language

5. 注意事项

  1. 内存越界:定义字符串时,必须留出足够的空间存储字符和\0

    char str[5] = "hello"; // 错误:无法存储最后的'\0'
    
  2. 安全输入:避免gets,推荐fgets以防止缓冲区溢出。

  3. 动态分配内存:如果字符串长度不确定,可以使用动态内存分配。

    char *str = (char *)malloc(50 * sizeof(char));
    strcpy(str, "dynamic");
    printf("%s\n", str);
    free(str);
    

6. 小练习

试着实现以下功能:

  1. 手动实现strlen函数。
  2. 手动实现字符串拼接(类似strcat)。
  3. 判断一个字符串是否是回文。

如果需要更详细的讲解或代码实现,欢迎继续提问!

标签:s1,char,str,printf,字符串,include
From: https://www.cnblogs.com/lyx9785/p/18570746

相关文章

  • 代码随想录算法训练营第十天(LeetCode232.用栈实现队列;LeetCode225.用队列实现栈;LeetCo
    LeetCode232.用栈实现队列题目链接:用栈实现队列题目链接思路队列是先进先出,栈是先进后出,为了能够让栈可以模拟队列的先进先出,我们设置两个栈,一个栈作为入栈,一个栈作为出栈,我们在入栈存储完数据后,将入栈中的数据全部存储到出栈中,那么从出栈中弹出来的数据就是先进先出的......
  • PHP 带中文字符串截取
    PHP中带有中文字符串的截取可以直接使用substr方法,无需使用mb_substr。<?php$s='<?xmlversion="1.0"?><S:Envelopexmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:queryTablesResponsexmlns:ns2="http://web.......
  • js中在将字符串数字转为数字时,使用哪种方式更安全
    在JavaScript中,将字符串数字转换为数字时,有几种常见的方法,但每种方法都有其适用场景和潜在的风险。为了确保转换的安全性和准确性,建议使用以下方法:1.Number构造函数Number构造函数是最直接和安全的方法之一,它可以处理各种数字格式,包括整数、浮点数和科学计数法。conststr......
  • Day39--连接两个字符串
    Day39--连接两个字符串在Java中,要连接两个字符串,可以使用+运算符或者String类的concat方法。使用+运算符示例代码如下:StringfirstName="John";StringlastName="Doe";System.out.println(firstName+lastName);在这个例子中,firstName和lastName通过+运算符......
  • 【leetcode100】找到字符串中所有字母异位词
    1、题目描述给定两个字符串s和p,找到s中所有p的异位词异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。示例1:输入:s="cbaebabacd",p="abc"输出:[0,6]解释:起始索引等于0的子串是"cba",它是"abc"的异位词。起始索引等于6的子串是......
  • Jackson:Java对象和JSON字符串的转换处理库使用指南
    Jackson介绍Jackson是一个非常流行的JavaJSON处理库,它能够将Java对象与JSON字符串相互转换。Jackson工具主要用于将请求的参数(例如前端发送的JSON数据)和响应的数据(例如后端返回给前端的数据)转换成Java对象,或者将Java对象转换为JSON格式的字符串。使用示......
  • 统计字符串中整数个数并分别输出数字(超级详细)
    【问题描述】输入一行字符串,不要超过80个字符,含有数字和非数字字符以及空格等,如:df23adfd562343?23dgjop535如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并将这些数依次输出。【输入说明】只有一行,含有数字和其它任意字符。该行最长含80......
  • 一篇文章看懂字符串哈希
    定义将一个字符串映射至一个整数\(w\)后称\(w\)为该字符串的\(hash\)值。性质对于一个固定的字符串,其在使用相同\(hash\)生成方式下得到的\(hash\)值唯一,而且对于每一个固定的\(hash\)值,其所对应的字符串在很大概率下是唯一的,因此我们在求出字符串的\(hash\)值后可以通过判断两......
  • 关于C语言 字符串(字符数组)s
    关于charC语言中的字符型用关键字char表示,它实际存储的是ASC码。字符常量可以用单引号法表示。在语法上可以把字符当做int型使用。字符串的实际长度每次存储字符串,应多分配字符个数加1,因为C语言的字符串被读取后会添加空字符"\0"结尾例如:存储"2357"到chara[20]中,a会存储......
  • ybtoj:字符串处理
    A:点击查看代码#include<bits/stdc++.h>usingnamespacestd;intmain(){ intn; cin>>n; if(n<0) { cout<<"-"; } n=abs(n); boolb=0; while(n>0) { if(n%10!=0) { cout<<n%10; b=1; } elseif(b==1) {......