精华内容
下载资源
问答
  • 空字符串保存的是不可见字符这个说法对么,不可见字符的严格意义是什么呢?
  • 本篇文章是对用C语言去除字符串两边空字符的方法进行了详细的分析介绍,需要的朋友参考下
  • c语言字符串空字符

    2021-01-09 12:21:45
    c语言字符串空字符 初步结论:1.只有将字符数组初始化为字符串空字符后面才会自动清为空字符; 2.若是后续赋值(或利用gets_s、%输入)为字符串,则只添加空字符,后续的仍为其他内容; 3.若利用for循环给字符数组...

    c语言字符串空字符
    初步结论:1.只有将字符数组初始化为字符串,空字符后面才会自动清为空字符;
    2.若是后续赋值(或利用gets_s、%输入)为字符串,则只添加空字符,后续的仍为其他内容;
    3.若利用for循环给字符数组逐个赋值,则需手动在末尾添加空字符。

    测试代码如下:
    (vs2015+win10)

    # include <stdio.h>
    # include <string.h>
    int main(void)
    {
    char name[40];
    scanf("%s", name);
    printf("%c", name[20]);
    return 0;
    }
    wall
    请按任意键继续. . .
    # include <stdio.h>
    # include <string.h>

    int main(void)
    {
    char name[40];
    scanf("%s", name);
    printf("%d", name[20]);
    return 0;
    }
    dass
    -52请按任意键继续.
    # include <stdio.h>
    # include <string.h>

    int main(void)
    {
    char name[40]=“wall”;
    printf("%d\n", name[0]);
    printf("%c\n", name[20]);
    return 0;
    }
    119

    请按任意键继续. . .
    # include <stdio.h>

    int main(void)
    {
    char name[40];
    for (int i = 0;i<40;i++)
    {
    char m=getchar();
    if (m == ’ ')
    {
    name[i] = ‘\0’;
    break;
    }
    else
    name[i] = m;
    }
    printf("%d\n", name[0]);
    printf("%d", name[30]);

    }

    展开全文
  • C语言判断字符串

    万次阅读 2018-01-26 20:23:34
    一般而言,我们习惯用一个字符数组用来存储一个字符串。...定义了数组或字符指针之后,需要做一个初始化,否则里面将是随机值,以后将无法判断改字符串是否为。 所以,首先要保证字符串初始

    一般而言,我们习惯用一个字符数组用来存储一个字符串。

    char str_array[LEN];

    或者malloc一段内存来存储一个字符串

    char * str_ptr = (char*) malloc (LEN*sizeof(char));

    定义了数组或字符指针之后,需要做一个初始化,否则里面将是随机值,以后将无法判断改字符串是否为空

    所以,首先要保证字符串初始化为空

    memset(str_ptr,'\0',sizeof(LEN*sizeof(char)));

    对于已经初始化过的字符串,我们就可以通过strlen来判断是否为空了。

    strlen()从字符串第0个字符开始计算,遇到字符\0停止,得到字符串长度,如果长度为0,则字符串为空。


    不论是对于常量字符串 const char* hi_str = "Hi str";

    还是对于字符串变量 char * str;

    我们都是可以用

    if (str != NULL) {

        if (strlen(str) == 0) {

            // it is empty string

        }

    }

    来判断。

    避免使用 if (str[0] == '\0') 来判断,因为可能导致crash.

    注意:

    • 如果是字符串指针,首先要判断指针是否为空,否则容易造成段错误。
    • 养成良好变成习惯,定义变量后首先要初始化。


    展开全文
  • C语言中无字符串变量,用字符数组处理字符串。 规定C风格的字符串都是以NULL空字符(’\0’)作为终结符结尾。由于它是字符串的终止符,但它本身并不是字符串的一部分, 所以字符串的长度并不包括NULL字节,如strlen...

    一、字符串

    • C语言中无字符串变量,用字符数组处理字符串。
    • 规定C风格的字符串都是以NULL空字符(’\0’)作为终结符结尾。由于它是字符串的终止符,但它本身并不是字符串的一部分, 所以字符串的长度并不包括NULL字节,如strlen函数。而且C标准库中提供的各种字符串处理函数都要求提供的字符串或字符数组必须以空字符结束,否则会出现不可预料的结果。

    初始化的方法

    • 逐个字符赋值
    • 用字符串常量

    char ch[6]={“Hello”}; char ch[6]=“Hello”; char ch[]=“Hello”;
    在这里插入图片描述
    char fruit[][7]={“Apple”,”Orange”,”Grape”,”Pear”,”Peach”};
    在这里插入图片描述

    二、标准库中的常用的字符串处理函数

    C标准库中头文件<string.h>

    求字符串长度的函数strlen

    • 格式:strlen(字符数组名)

    • 功能:计算字符串长度

    • 返值:返回字符串长度,不包括‘\0’在内

    • 注意:\xhh 表示十六进制数代表的符号,\ddd 表示8进制的

    char s1[10]= {'a','\0','B','C','\0','D'};
    char s2[ ] = "\t\v\\\0will\n";
    char s3[ ] = "\x69\141\n"; 
    
    //s1第二个字符为'\0'结束符,故strlen计算出来为1,但实际长度为10
    printf("s1: %d %d\n",strlen(s1),sizeof(s1)/sizeof(char));   //s1: 1 10
    
    //s2的前三个字符为 '\t','\v'.'\\'(符号\的转义字符),第四个为结束符'\0'
    printf("s2: %d\n",strlen(s2));  // s2: 3
    
    // \x69表示字母i的十六进制 ,\h141为字母a的8进制 
    printf("s3: %d\n",strlen(s3));  // s3: 3
    puts(s3);  //ia
    

    在这里插入图片描述

    字符串拷贝函数

    • strcpy函数
    • 格式:strcpy(字符数组1,字符串2)
    • 功能:将字符串2,拷贝到字符数组1中去
    • 返值:返回字符数组1的首地址
    • 说明:字符数组1必须足够大;拷贝时‘\0’一同拷贝
    char str1[] = "We are csdn!";
    char str2[] = "Hello!";
    strcpy(str1, str2);   //str1 = Hello!
    
    • strncpy函数
    • 原型:strncpy(str1,str2,n);
    • 功能:将字符串str2中的前n个字符复制到字符串str1的前n个字符中
    • 返回:返回字符数组1的首地址
    • 注意:不会清除str1中全部字符串,只会改变前n个字符串; n不能大于字符串str1、str2的长度
    char str1[] = "We are csdn!";
    char str2[] = "Hello!";
    strncpy(str1, str2, 3);
    printf("str1 = %s\n", str1); //str1 = Helare csdn!
    

    字符串连接函数strcat

    • 格式:strcat(字符数组1,字符数组2)
    • 功能:把字符数组2连到字符数组1后面
    • 返值:返回字符数组1的首地址
    • 说明:字符数组1必须足够大;连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消,新串最后加‘\0’
    char str1[20] = "We are csdn!";
    char str2[] = "Hello!";
    strcat(str1, str2);
    printf("str1 = %s\n", str1); //str1 = We are csdn!Hello!
    

    字符串比较函数strcmp

    • 格式:strcmp(字符串1,字符串2)
    • 功能:比较两个字符串
    • 比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止
    • 返值:返回int型整数
      - a. 若字符串1< 字符串2, 返回负整数
      - b. 若字符串1> 字符串2, 返回正整数
      - c. 若字符串1== 字符串2, 返回零
    char str1[] = "Wearecsdn!";
    char str2[] = "Wearecsdn!";
    char str3[] = "Wearea!";
    char str4[] = "Wearef!";
    char str5[] = "Weare"
    int cmp1 = strcmp(str1, str2);        //cmp1=0
    int cmp2 = strcmp(str1, str3);        //cmp2=1
    int cmp3 = strcmp(str1, str4);        //cmp3=-1
    int cmp4 = strcmp(str1, str5);        //cmp4=1
    

    其他常见的字符串函数

    • strncat(p, p1, n) 附加指定长度字符串
    • strcasecmp忽略大小写比较字符串
    • strncmp(p, p1, n) 比较指定长度字符串
    • strchr(p, c) 在字符串中查找指定字符
    • strstr(p, p1) 查找字符串
    • isalpha() 检查是否为字母字符
    • isupper() 检查是否为大写字母字符
    • islower() 检查是否为小写字母字符
    • isdigit() 检查是否为数字

    更新,用c语言实现相关字符串函数
    注意,用const修饰防止字符串被修改

    char *mystrcpy(char *str1, const char *str2){
    	while( *(str1++) = *(str2++));
    	return str1;
    }
    
    char *mystrncpy(char *str1, const char *str2,int n){
    	while(n--){
    		*(str1++) = *(str2++);
    	}
    	return str1; 
    }
    
    char *mystrcat(char *str1, const char *str2){
    	while( *str1 != '\0'){
    		str1++;
    	}
    	while(*(str1++) = *(str2++));
    	return str1;
    }
    
    int mystrcmp(const char *str1, const char *str2){
    	while( (*str1==*str2) && *str1 != '\0'){
    		*str1++; *str2++;
    	}
    	int x=(*str1 - *str2);
    	return x;
    	
    }
    
    展开全文
  • C语言字符串字符串的结束标志

    千次阅读 2020-06-19 13:52:16
    一 概述 在C语言中,是将字符串作为字符数组来处理的,也就是使用一个一维字符数组来存放字符串。...如果字符数组存在若干字符,前面的8个字符都不是空字符"\0",而第9个字符为空字符"\0",则认为数组中字符串

    一 概述

    在C语言中,是将字符串作为字符数组来处理的,也就是使用一个一维字符数组来存放字符串。字符串中的字符是逐个存放在数组元素中的。

    我们在讨论字符串长度的时候实际上讨论的是字符串的实际长度,而非对应字符数组的长度。如,定义一个字符数组长度为100,实际有效的字符只有40个。那我们如何通过实际代码知道位置字符串的长度呢。在C语言中规定了一个"字符串结束的标志"。即以字符"\0"作为结束标志。如果字符数组存在若干字符,前面的8个字符都不是空字符"\0",而第9个字符为空字符"\0",则认为数组中字符串的有效长度为8。

    C系统中使用字符数组存储字符串的常量的时候会自动加一个'\0'作为结束符。

    二 说明

    '\0'代表ASCII码为0的字符,从ASCII码表中可以查到。ASCII码为0的字符并不是一个可以显示的字符,而是一个"空操作符",即它什么也不做,只是用来作为字符串结束的标志不会产生附加的操作或增加有效字符,只是达到一个辨别的标志。

    三 系统识别结束的原理

    例子:printf("How do you do? \n")

    实际上,在向内存中存储时,系统自动在最后一个字符'\n'的后面加上一个'\0',作为字符串结束的标志。而在执行printf函数时,没输出一个字符检查一次当前字符是否为'\0',如果是'\0'就会停止输出。

    四 字符串常量初始化字符数组

    如 char c[] = {"I am happy"}; 此时我们可以省略花括号,直接写成:char c[] = "I am happy"; 后者直接使用字符串常量初始化字符数组。

     

     

     

     

    展开全文
  • c语言字符串是以空字符(\0)结尾的char数组。1、字符串的表示1、字符串常量:指用双引号中的任何字符。在双引号里面的字符编译器会自动提供\0字符。 字符串常量属于静态存储类。静态类存储是指如果一个函数中...
  • 字符串字符串函数 函数:gets()、gets_s()、fgets()、puts()、fputs()、strcat()、strncat()、 strcmp()、strncmp()、strcpy()、strncpy()、sprintf()、strchr() 创建并使用字符串 ...字符串是以空字符(\0...
  • C语言——字符串

    2021-03-14 18:18:11
    为便于确定字符串的长度,C编译器会自动在字符串的末尾添加一个ASCLL码值为0的操作符‘\0’作为字符串结束的标志,在字符串中可以不显示地写出 字符串:实际就是由若干有效字符构成且以字符‘\0’作为结束的一个...
  • C语言字符串的长度

    2021-04-02 13:36:23
    利用一个循环来遍历该字符串,并且判断当前位置是否为,在字符串的结尾,通常用\0来表示结束。 #include<stdio.h> #include<string.h> main() { int i=0; char str[50]="This Is a C Program"; ...
  • C语言字符串

    2021-03-26 08:55:32
    目录课程链接-C语言程序设计入门1 字符串2 字符串特征3 字符串变量定义4 总结5 字符串变量6 选择指针还是数组7 字符串输入输出7.1 字符串赋值7.2 字符串的输入输出7.3 安全的输入7.4 常见错误7.5 空字符串 ...
  • 字符串与字符数组 字符串一定是一个char的数组,但char的数组未必是字符串。——以字符’\0’结尾的char数组就是一个字符...2、以隐含的空字符\0结束,占用字节数+1,注意:1字节/字母,2字节/汉字; 3、字符串可以...
  • 1. 替换或删除字符串中的子字符串字符串的删除很简单,用后面的数据替代前面的数据就实现了;...replacement - 替换的字符串,即用于代替子字符串的,如果此值为,则直接删除子字符串。/************...
  • C语言细节 字符串

    2020-08-29 00:15:26
    字符串是以空字符('\0')结尾的char类型数组 //实例: char words[20]="Hello World!"; 2.输出字符串: puts(<str>); //会自动在结尾加上换行符 //参数说明: str:要输出的字符串 //实例: char words[20]=...
  • C语言字符串常用操作 字符串逆序 实现方法:通过strlen函数获得字符串的长度(也可以使用while循环获得),然后通过len/2将len/2这个下标的前后的元素交换(如果len/2是偶数也就相当于最后两个元素交换),代码...
  • 初学C语言,字符串

    2021-04-27 14:11:34
    字符串储存在char类型的数组中, 如果char类型的数组末尾包含一个表示字符串末尾的空字符\0, 则该数组就组成了一个字符串 char strname[21] ; //定义一个最多存放20个英文字符或10个中文字符的字符串, 字符串以"...
  • C语言字符串赋值处理方式

    万次阅读 多人点赞 2016-11-18 09:45:28
    C语言中,字符串可以赋值...而且C标准库很多方法处理字符串是以空字符结尾为前提的,这个必须要记住。char *p,a='5'; p=&a; //显然是正确的, p="abcd"; //但为什么也可以这样赋值??答: 双引号做了3件事: 1.申请
  • C语言字符串的存储方式记录 一直以来,对于C中的字符串存储的形式模模糊糊的,所以经常会有越界的错误发生, 这几天静下心来,看了看基本C的参考书,现在记录一下对于字符串的存储,方便自己以后回顾。 例: … ...
  • C语言没有字符串的类型自己要会编写字符串的各种函数是以特殊字符数组的形式存储和处理字符串,这种字符串必须以空字符 '\0' 结尾。这类字符串数组称为C风格字符串必须以空字符 '\0' 结尾'\0' 为结束符数组元素初始...
  • //空字符串 这种由双引号( Double Quote )引起来的一串字符称为字符串字面值( String Literal ),或者简称字符串。 注:字符串的结束标志是一个 \0 的转义字符。在计算机计算字符串长度的时候 \0 是结束标志,...
  • C语言字符串

    2017-03-14 00:20:40
    由于在数组的末尾存储了空字符,所以字符数组的大小比单词 “Hello” 的字符数多一个。 其实,不需要把 null 字符放在字符串常量的末尾。C 编译器会在初始化数组时,自动把 ‘\0’ 放在字符串的末尾。#include ...
  • C语言常用字符串函数

    2019-03-15 10:52:59
    strcat(str1, src2)把 src2 所指向的字符串追加到 str1 所指向的字符串 strcpy(str1, src2)把 src2 所指向的字符串复制到 str1 ... strlen(srr)计算字符串 str 的长度,直到结束字符,但不包括结束字符
  • C语言实现字符串拼接

    千次阅读 2020-12-04 18:06:48
    /*实现字符串的拼接*/ //头文件 #include <stdio.h>... //声明一个的数组用于接收两个字符串(需要指定数组大小) char str2[100] = {0}; //分别求两个字符串的大小 int str_size = siz.
  • C语言字符串函数

    2019-05-21 15:26:27
    关于字符串函数 字符串: 一个或多个字符的序列 如:’‘hello world’’ (双引号进告知编译器他括起来的是字符串) 字符串都被存储在char类型的数组中。...2.’‘X’'实际上由两个字符组成:'X’和空字符\0 ...
  • 18 C语言 - 字符串

    2019-10-22 11:25:02
    在 C 语言中,字符串实际上是使用 null 字符 ‘\0’ 终止的一...由于在数组的末尾存储了空字符,所以字符数组的大小比单词 “Hello” 的字符数多一个。 char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; 依据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,658
精华内容 663
关键字:

c语言空字符串

c语言 订阅