精华内容
下载资源
问答
  • C语言字符串定义

    千次阅读 2020-05-12 14:51:59
    字符串(单个字符)的定义 1.单个字符的定义 char i = ‘x’ (单个字符的定义字符串创建后为常量无法修改 2.一维字符串数组的定义 char i []=”xxxx”;(此方式定义的一维字符串数组必须立刻赋值) char i [4];...

    一.字符串(单个字符)的定义

    1.单个字符的定义

    char i = ‘x’ (单个字符的定义)
    字符串创建后为常量无法修改

    2.一维字符串数组的定义

    char i []=”xxxx”;(此方式定义的一维字符串数组必须立刻赋值)
    char i [4];(此方式相当于在存储器里面建立一个可以存储3个字符的数组空间)
    char i [4]=”xxxx”;
    char i [4]={‘x’’x’’x’’x’};
    其中定义的数组的元素数要比实际赋值的数量多一,用于存放\0位置

    字符数组只有在定义时才能将整个字符串一次性地赋值给它,一旦定义完了,就只能一个字符一个字符地赋值了。

    3.二维字符串数组的定义

    char i[][80] = {
    “xxxxxxx”,
    “xxxxxxx”,
    };
    第一个方括号代表数组的行数,第二个方括号代表数组的列数,同时定义字符的个数(要比实际应用多一,用于存放\0位置)。

    二.字符串(单个字符)和一维字符数组输入

    1.scanf函数

    给字符串(单个字符)赋值

    scanf(“%2s”, &x);(其中x为定义的char类型变量的名字)
    给字符数组赋值

    scanf(“%2s”, x);(其中x为定义的字符数组名字)

    三. 字符串(单个字符)和一维字符数组的输出

    1.单个字符的输出

    printf (“%c”, x);对单个字符进行输出
    X为char类型变量的名字

    2.字符数组的输出

    printf(“%s”, x);对字符串进行输出
    X为字符数组名

    四.字符串的处理

    1.string.h头文件的使用
    定义方法:#include <string.h>

    常用的几个函数及功能:

    strchr() 查找字符
    stremp() 比较字符串
    strstr() 在字符串中查找字符串 ,使用方法:strstr(“被查找字符串”, “需要查找的字符串”);
    strcpy() 复制字符串
    strlen() 返回字符串的长度
    strcat() 连接字符串
    strdup() 复制字符串到堆上
    strcmp() 用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数

    atoi 函数(在<stdlib.h>库文件中),是把字符串转换成整型数的一个函数

    五.字符数组与指针之间一些注意事项

    1.指针退化问题

    char s[] =“xxxx”;
    char * t = s;
    字符数组变量赋值给指针时,指针变量只会包含数组的地址信息,而丢失了数组的长度信息,这个信息的丢失称为指针退化。

    六.为什么字符串可以赋值给字符指针变量
    char * a = “xxxx”
    双引号做了3件事:
    1.申请了空间(在常量区),存放了字符串
    2. 在字符串尾加上了’/0’
    3.返回地址

    展开全文
  • 可以通过字符数组或字符指针来定义字符串,也可以用宏定义对常量字符串进行定义。 通过字符数组定义字符串 一维的情况如下: char string0[10];//定义个长度为10的字符串,但未赋值 char string1[]="prison break";//...

    可以通过字符数组或字符指针来定义字符串,也可以用宏定义对常量字符串进行定义。

    通过字符数组定义字符串

    一维的情况如下:
    char string0[10];//定义个长度为10的字符串,但未赋值
    char string1[]="prison break";//定义了一个字符数组string1,并进行初始化,使得其长度自动为13(字符串”prison break"中的字符个数加上结尾的'\0')
    char string2[100]="michael scofield";//定义了一个有100个元素的字符数组string2,并初始化了17个元素("michael scofield";加上结尾的'\0');
    
    二维的情况如下:
    char string3[6][30];
    char string3[6][30]={"joy","phosee","monses","chandele","ross","rather"};
    //此句表示有6个字符串,每个字符串的长度最多为30,每个字符串的初始值与"joy","phosee","monses","chandele","ross","rather"相对应;   
    
    

    字符指针定义字符串

    char *str2  = "HelloWorld";  // 通过字符指针来定义字符串"HelloWorld",指针str2指向一个存放字符串"HelloWorld"的连续地址单元的首地址
    

    宏定义对常量字符串进行定义

    #define str3 "HelloWorld";  // 通过宏定义来定义字符串"HelloWorld",等价于str3="HelloWorld"
    
    展开全文
  • C语言字符串赋值的方法

    万次阅读 多人点赞 2020-09-13 10:57:40
    首先,C语言没有向C++,Java,python等面向对象的语言中string这样的字符串类型,C语言中的字符串是存放在字符型数组中的 C语言中,常见的3种字符串赋值有如下: 1、通过字符数组直接初始化 int main() { char str...

    首先,C语言没有向C++,Java,python等面向对象的语言中string这样的字符串类型,C语言中的字符串是存放在字符型数组中的

    C语言中,常见的3种字符串赋值有如下:

    1、通过字符数组直接初始化

    int main()
    {
    	char str[10] = "China";//还可以写成char str[10] ;str[10] = "China";
    	printf("str = %s", &str);
    	return 0;
    }
    

    但是,直接把数组元素赋值给数组名(也就是数组首元素的地址),是不行的

    int main()
    {
    	char str[10] ;
    	str  = "China";
    	printf("str = %s", str);
    	return 0;
    }
    

    这样会出现编译错误:C2106(运算符的左操作数必须为左值)

    2、使用strcpy函数进行初始化

    int main()
    {
    	char str1[10],str2[] = "China";
    	strcpy(str1, str2);//此行代码还可以写为 strcpy(str1,"China");
    	printf("str1 = %s", str1);
    	return 0;
    }
    

    这里需要注意的是,使用strcpy函数,strcpy(str1,str2),字符数组1必须定义的足够大,以便容纳被复制的字符串2,避免数组越界。

    以下写法是错误的

    char str1[10],str2 = "China";
    str1 = str2;
    

    注:
    在C语言中,将一个字符串赋值给另一个字符串,只能使用strcpy函数

    但是,可以使用赋值号实现对单个字符的赋值

    如:

    char str1[10];;
    str1[0] = 'A';
    str1[1] = 'B';
    str1[2] = '\0';
    

    这里需要注意的是,结束后一定要自行添加 ‘\0’
    否则,就会出现” AB烫烫烫烫烫烫烫 ]D痨“的编译结果

    3、通过指针赋值

    通过指针赋值字符串相对比较难理解,大家先看一段代码

    #define _CRT_SECURE_NO_WARNINGS//在VS2019下可以加,否则会出现C4996问题
    #include <stdio.h>
    int main()
    {
    	char* string = "I Love China";
    	printf("string  = %s", string);
    	return 0;
    }
    

    如何理解这段代码:
    ①程序定义了一个char *类型的指针变量(字符指针变量)string,在C语言中,指针 = 地址,顾名思义,指针变量存放着地址
    ②字符串常量"I Love China",C语言在处理字符串常量是按字符数组来处理的。
    ③结合上两点可以知道,该字符指针存放的是字符常量第一个元素的地址
    因此,输出时,只需告诉编译器字符常量首元素的地址即可

    char* string = "I Love China";
    

    还可以写为:

    char * string;
    string = "I Love China";//不可以写为*string = "I Love China";
    

    不可以写为:
    *string = “I Love China”;

    因为,字符串常量在C语言中是按字符数组来存储的,string 存储地址


    另外,在谈谈字符串的输出;

    char str[10] = "China";
    printf("str = %s", str);
    

    而,整型数组的输出确是需要用到for循环

    展开全文
  • c语言字符串详解

    千次阅读 多人点赞 2018-09-16 18:59:04
    c语言字符串的两种处理方式,c语言处理字符串一般使用字符数组来处理,记得加上结束符,否则会出现乱码。 1、通过字符数组来处理 #include &amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;gt; #include &...

    c语言字符串,c语言处理字符串一般使用字符数组来处理,记得加上结束符,否则会出现乱码。

    1、通过字符数组来处理

    #include <stdio.h>
    #include <Windows.h>
    #include <stdlib.h>
    int main(void) {
    	char str1[8] = { 'a','h','i','n','a' };      //实际上字符串长度为5,赋值比5位大,自动加上结束符号
    	char str2[] = { 'b','h','i','n','a','\0' };			// '\0'  表示结束符号
    	char str3[10] = "china";
    	//这里实际上 str1,str2,str3都是存放的 字符数组 的首地址
    	printf("%s\n",str1);
    	printf("%s\n", str2);
    	printf("%s\n", str3);   //这里表示按照 16 进制输出
    	getchar();
    	return 0;
    }
    

    2:通过字符指针来处理

    int main(void) {
    	char *str = "feng lai le";   
    	//定义一个指针变量,指针变量,  
    	//定义指针变量的方式由一个基础类型short、int、long、char、float、double 加一个*
    	//这里 指针变量 为str, 指向的是字符串第一个字符f;也就是说当前指针变量存放的是f的地址
    	printf("%s\n", str);     //这里传入的是指针变量str  
    	// 这里输出的时候(实际上是循环读取),会一直读取,直到读取到 "\0"的结束符号;
    	//循环读取
    	while(*str){       //这里的while循环 循环条件为真的时候
    		printf("%c", *str);   //指针取的是第一个字符  
    		str++;       //指针加减就是将指针向后向前移动
    	}
    	printf("%c\n", "");
    	int shuzu[] = {1223,2222,4565,5655};
    	int *integer1;
    	integer1 = &shuzu;   //将数组的首地址赋值给指针
    	printf("%d\n", integer1);   //这里输出的将是 shuzu 的第一个地址 十进制
    	getchar();
    	return 0;
    
    }
    

    总结一下:
    1、通过字符数组名或字符指针变量可以输出整个字符串。但是对于一个数值型数组:例如整形数组是不能这样操作的。
    2、通过字符指针的方式,是不能修改其中的值得,这是因为 数据保存在静态数据区域,无法通过指针来修改静态区域中的值,但是字符数组的方式,是可以修改值得,因为字符数组的方式,数据是存放在栈空间数组的。

    展开全文
  • 定义c语言字符串的三种方法

    千次阅读 2018-10-25 22:13:53
    通过字符数组来定义字符串"HelloWorld",数组中每个存储单元存放一个字符 char *str2 = "HelloWorld"; 通过字符指针来定义字符串"HelloWorld",指针str2指向一个存放字符串"...
  • C语言实现合并字符串

    2020-12-23 04:47:34
    在先前,我肯定是要定义一个新的“字符串”,然后进行内存的拷贝。其实,有一个printf函数的孪生兄弟可以实现这个功能,那就是sprintf。 其实,在接触操作系统的时候我对这个函数多少有一点认识。那就是这个函数在...
  • **1、字符串指针一定要开辟空间后在做输入** char * str; str=(char*)malloc(100*sizeof(char)); scanf("%s",&amp;str); **2、字符串数组要做初始化的开辟空间后再来存储...
  • C语言字符串的几种定义方式和有没有’\0

    万次阅读 多人点赞 2018-08-12 00:22:37
    ( 主要解决 什么时候是 “abcd\0” 什么时候是 “abcd” 的问题 ) 几种常用方式 ...我们应当注意这些情况,并且在定义字符串时,根据这些字符串生成方式的特点,结合实际需要生成更加合适的字符串
  • C语言定义字符串的几种方式

    千次阅读 2020-03-11 08:45:27
     由于字符串本质上其实就是以'\0作为'结尾的特殊字符数组,所以定义字符串时,必须保证字符串存储的最后一个元素为'\0'。  当我们没有给定字符串具体长度时,我们通过这种方式:char 字符串名称[] = {字符串所含...
  • C语言定义字符串的几种方式

    万次阅读 多人点赞 2019-05-30 14:14:26
    #include <stdio.h> ... //定义字符串的几种方式 //字符串和字符数组的区别:最后一位是否是空字符 char names1[] = {'j', 'a', 'c', 'k', '\0'}; char names2[50] = "jack"; char * ...
  • C语言字符串例题

    千次阅读 2019-03-02 20:56:35
    C语言字符串例题 第一题:函数实现字符串两端去除空格字符 #define _CRT_SECURE_NO_WARNINGS #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; #include&...
  • C语言返回字符串函数共有四种方式,分别如下: 使用堆空间,返回申请的堆地址,注意释放 函数参数传递指针,返回该指针 返回函数内定义的静态变量(共享) 返回全局变量 下面来看看详细的介绍 其实就是要返回一...
  • c语言字符串空字符

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

    万次阅读 多人点赞 2018-12-05 14:04:48
    c语言字符串都是以“/0”结尾 而这里就有三个概念 EOF /0 -1 /n 首先c语言中所有字符串的结尾标志都是/0 是字符串结尾的标志 它是一种转义符 而EOF是文件流结束标志代表着 文件(file),也可以是标准输入...
  • C语言字符串赋值

    千次阅读 2021-03-06 12:50:16
    C语言字符串赋值 #include <stdio.h> int main() { char s[10]; s = "string"; //main.c:14:7: error: assignment to expression with array type //s = "string"; char *sp; *sp = "string"; //...
  • C语言字符串分割的两种方式

    千次阅读 2021-04-23 10:09:38
    s[]是原字符串,delim为分隔符 返回:字符串拆分后的首地址。 “拆分”:将分割字符用 '\0’替换 特性: 1)strtok拆分字符串是直接在 原串 上操作,所以要求参1必须,可读可写(char *str = “www.baidu.com” 不行...
  • 1、字符数组的定义与...2、字符数组与字符串c语言中,将字符串作为字符数组来处理。(c++中不是)在实际应用中人们关心的是有效字符串的长度而不是字符数组的长度,例如,定义一个字符数组长度为100,而实际有效字
  • C语言中怎样定义一个字符串并输入输出

    万次阅读 多人点赞 2018-02-28 16:57:29
    C语言中没有字符串类型,用字符数组处理字符串 字符数组定义:char 数组名 [常量表达式][常量表达式] 说明:一维字符数组,用于存储和处理一个字符串 。二维字符数组,用于同时存储和处理多个字符串 输入输出...
  • C语言-定义一个字符串

    万次阅读 多人点赞 2019-11-24 12:08:27
    C语言可以使用字符数组来处理字符串。 几种常用方式: 1.char str[] = { “zhang” }; char str[] = “zhang” ; 2.char str[] = { ‘z’, ‘h’, ‘a’, ‘n’,'g' }; //自己加入’\0‘,应为str[] = { ‘z’, ‘h...
  • #include int main() { char *ptr[10]; 为什么这样运行时会出错? gets(ptr[0]); } #include int main() { char ptr[10][20]; 而这样运行时则没有问题? gets(ptr[0]); } char *p[10] 与 char p[10][20] 之间...
  • C语言链表实现字符串输入、查找、删除等 C语言实验内容
  • C语言中字符和字符串定义,及其相关的函数,包括复制,比较,转换成整形数等
  • 1.字符串常量只能读取,不能修改;字符数组可以读取和修改。...2.以指针形式赋值的字符串,只能修改字符串指针,不能修改字符串内容,而字符数组形式的字符串,可以修改字符串中的每个字符。 ...
  • c语言字符串的初始化

    千次阅读 2020-09-30 20:30:01
    预习C语言字符串语法的一点点总结: c语言字符串的两种形式及其初始化 ·字符数组(定义时就初始化是个好习惯,否则可能会有bug的惊喜) 第一种初始化 char ch[6]={'h','e','l','l','o'} ,也可以写成char ch[]=...
  • C语言字符串使用指南

    千次阅读 2020-05-14 21:56:37
    C语言里边是没有字符串数据类型的,但在平时开发中肯定是少不了字符串操作的。因为字符串都是有字符组成的,所以在C语言字符串是通过一维字符数组来实现的。 ...
  • C语言字符串输出中文乱码

    千次阅读 2019-11-30 00:37:27
    字符串复制输出字符串中文乱码,字符串长度大于复制的字符串,未加'\0'结束标志
  • 第一种:使用二维数据来完成 void first_demo() { char str_list[3][10]={"zero","one","two"}; int i; for(i=0;i<3;i++) { printf("%s ",str_list[i]); } } 第二种:使用指针来完成 ... for(i=

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 217,662
精华内容 87,064
关键字:

c语言字符串定义

c语言 订阅