精华内容
下载资源
问答
  • C语言实现字符串拆分操作,把字符串拆分成字符串数组,然后再输出。 使用sstream方法,作为底层驱动操作实现非常方便。
  • 总结的一些笔试过程中的C语言练习题,虽然不会再出现原题但是可以学习学习其中的思想。万变不离其宗。资源主要是关系笔试部分的字符串专项练习。
  • 主要介绍了C语言 字符串首字母转换成大写简单实例的相关资料,需要的朋友可以参考下
  • c语言字符串颠倒

    2018-10-28 22:55:04
    C语言实现字符串顺序翻转。
  • 这个例子从文本文件ad9361.txt一行一行读取数据,通过spi设置寄存器值。支持命令读写:spidev_test -r F1 -w A0,-r参数表示寄存器地址,-w表示要写入的值,均为16进制(不要加0x开头)
  • C语言字符串查找

    2014-04-27 16:40:53
    C语言实现字符串的查找,完整代码,直接使用
  • c语言字符串

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

    c语言字符串都是以“/0”结尾

    而这里就有三个概念 EOF /0  -1 /n

    首先c语言中所有字符串的结尾标志都是/0 是字符串结尾的标志 它是一种转义符 而EOF是文件流结束标志代表着 文件(file),也可以是标准输入(stdin)的输入结束 而我们都知道大多数程序EOF的传递是靠-1这个返回值控制的  就相当于 #define EOF (-1) (在stdio.h中是这样定义的) 而'\n'表示换行符,通常用作一些读取函数的读取结束标志,比如scanf,getchar(),gets()等,一旦遇到'\n'就结束读取并返回 

    呢么就涉及到了几个函数 

    getchar() 它能读取任何 字符(只要是在ACSII上的)如回车(ACSII码值:10)、换行(13)、null(\0)都可以,所以我要做的是判断,而和gets(直至接受到换行符或EOF,换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串)和scanf(tab,空格,换行,回车都作为结束符)都不同

    scanf()具体的高级用法可以看这篇https://www.cnblogs.com/windpiaoxue/p/9184194.html

    这两个函数主要的区别就是getchar()只能获取一个字符但是scnf()能获取字符串 并且可以通过%s %c %d等等 的操作来限制输入形式
    gets() 

    # include <stdio.h>
    int main(void)
    {
        char str[20] = "\0";  //字符数组初始化\0
        printf("请输入字符串:");
        gets(str);
        printf("%s\n", str);
        return 0;
    }

    此外,关于使用 gets() 函数需要注意:使用 gets() 时,系统会将最后“敲”的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符。这就意味着,如果前面使用过 gets(),而后面又要从键盘给字符变量赋值的话就不需要吸收回车清空缓冲区了,因为缓冲区的回车已经被 gets() 取出来扔掉了。

    在c语言中没有字符串类型 通过字符数组来模拟字符串

    字符数组的初始化

    1.指定长度

    char buf[4] = {'a','b','c','d'};
    char buf[100] = {'a'};//剩下的未定义的全部为0

    2.不指定长度

    char buf[] = {'a'};//需要多少分配多少


       要区分一个问题就是字符串的长度要加上/0

    #include<stdio.h>
    //#include<string.h>
    void main()
    {
    int size = 0;
    char buf[] = "abcd";
    int len = strlen(buf);
    printf("%d\n",len);
    size = sizeof(buf);
    printf("%d",size);
    }

    #include<stdio.h>
    #include<string.h>
    void main()
    {
    int size = 0;
    char buf[128] = "abcd";
    int len = strlen(buf);
    printf("%d\n",len);
    size = sizeof(buf);
    printf("%d",size);
    }

    所以我们可以发现strlen始终是将字符数组当做出去/0的长度输出

    但是size是把这个字符数组当做一个数组看待但是数组的值

    sizeof(...) strlen(...)的区别

        sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
        它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。
        由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。
        具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:
        数组——编译时分配的数组空间大小;
        指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);
        类型——该类型所占的空间大小;
        对象——对象的实际占用空间大小;
        函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。
    strlen
        strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。
        它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。

    从这张图我们就可以看出sizeof是高亮字体 而strlen只是一个函数

    字符串在内存分配 堆上栈上 全局区

    字符串的copy

    #include<stdio.h>
    
    int main()
    {
    char a[] = "i am student.";
    char b[64];
    int i = 0;
    
    for(i = 0;*(a + i)!='\0';i++)
    {
        *(b + i) = *(a + i);
    }
    
    //\0未被copy
    
    b[i] = '\0';
    printf("a:%s\n",a);
    printf("b:%s\n",b);
    return 0;
    }

     假如不加上b[i] = '\0';

    利用指针封装函数完成copy 

    #include<stdio.h>
    #include<stdlib.h>
    
    void copy_str(char *from,char *to)
    {
    for(;*from != '\0';from++,to++ )
    {
        *to = *from;
    }
    *to = '\0';
    return ;
    }
    
    int main()
    {
    char *from = "abcd";
    char buf2[100];
    copy_str(from,buf2);
    printf("buf2:%s\n",buf2);
    system("pause");
    return 0;
    }

    展开全文
  • 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、通过字符指针的方式,是不能修改其中的值得,这是因为 数据保存在静态数据区域,无法通过指针来修改静态区域中的值,但是字符数组的方式,是可以修改值得,因为字符数组的方式,数据是存放在栈空间数组的。

    展开全文
  • void revstr(char *str) //字符串反转 int substring(char *res,int pos,int len,char *substr)//从pos开始取len个字符到substr中,返回1成功,0失败 int strindex(char *res,int pos,char *substr) //返回substr在...
  • 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语言字符串例题


    第一题:函数实现字符串两端去除空格字符

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<ctype.h>
    
    /**
      *有一个字符串开头或结尾含有n个空格 (”   abcdefgdddd    ”),
      *欲去掉前后空格,返回一个新字符串。
      *要求1:请自己定义一个接口(函数),并实现功能;
      *要求2:编写测试用例。
      *int trimSpace(char *inbuf, char *outbuf);
      */
    /**
     * func:实现字符串的前后空格去除
     * param:
     *	inbuf:输入字符串
     *  outbuf:输出字符串
     * return:
     * 错误返回1.正常执行返回0
     */
    int trimSpace(char *inbuf, char *outbuf)
    {
    	if (inbuf == NULL || outbuf == NULL)
    	{
    		return -1;
    	}
    	char *in = inbuf;
    	char *out = outbuf;
    	int length = strlen(in) - 1;
    	char *end = in + length;
    	while (isspace(*in))
    	{
    		in++;
    	}
    	while (isspace(*end))
    	{
    		end--;
    	}
    
    	length = end - in + 1;
    	strncpy(out, in, length);
    	return 0;
    }
    int main()
    {
    	char buf[] = "    abcdefgdddd    ";
    	char bufOut[100] = { 0 };
    	trimSpace(buf, bufOut);
    	printf("bufOut = %s\n", bufOut);
    	printf("\n");
    	system("pause");
    	return 0;
    }

    第二题:编程实现每隔一位取字符子串

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    /**
     * 有一个字符串“1a2b3d4z”;
     * 要求写一个函数实现如下功能:
     * 功能1:把偶数位字符挑选出来,组成一个字符串1。
     * 功能2:把奇数位字符挑选出来,组成一个字符串2。
     * 功能3:把字符串1和字符串2,通过函数参数,传送给main,并打印。
     * 功能4:主函数能测试通过。
     * int getStr1Str2(char *source, char *buf1, char *buf2);
     */
    int getStr1Str2(char *source, char *buf1, char *buf2)
    {
    	if (source == NULL || buf1 == NULL || buf2 == NULL)
    	{
    		return - 1;//代表异常
    	}
    	char *src = source;
    	char *out1 = buf1;
    	char *out2 = buf2;
    	while (*src)
    	{
    		*out1++ = *src++;
    		*out2++ = *src++;
    	}
    	//最后给字符串末尾添加0
    	*out1 = 0;
    	*out2 = 0;
    	return 0;
    }
    int main()
    {
    	char buf[] = "1a2b3c4d";
    	char buf1[20];
    	char buf2[20];
    	getStr1Str2(buf, buf1, buf2);
    	printf("buf1 = %s\n", buf1);
    	printf("buf2 = %s\n", buf2);
    
    	
    	printf("\n");
    	system("pause");
    	return 0;
    }

    第三题:键值对问题

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<ctype.h>
    
    //注: char* strstr(const char*src,const char* subsrc);返回字符串第一次出现的位置
    /**
     * 键值对(“key = value”)字符串,在开发中经常使用
     * 要求1:请自己定义一个接口,实现根据key获取.
     * 要求2:编写测试用例。
     * 要求3:键值对中间可能有n多空格,请去除空格
     * 注意:键值对字符串格式可能如下:
     * "key1 = value1"
     * "key2 =       value2"
     * "key3  = value3"
     * "key4        = value4"
     * "key5   =   "
     * "key6   ="
     *	int getKeyByValue(char *keyvaluebuf,  char *keybuf,  char *valuebuf, int * valuebuflen);
     */
    
    //如果函数使用在其定义之前,需要在使用前对函数进行声明
    int trimSpace(char *inbuf, char *outbuf);
    int getKeyByValue(char *keyvaluebuf, char *keybuf, char *valuebuf, int * valuebuflen)
    {
    	if (keyvaluebuf == NULL || keybuf == NULL || valuebuf == NULL || valuebuflen == NULL)
    	{
    		return -1;
    	}
    	//查找pos第一次出现的位置
    	char* pos = strstr(keyvaluebuf, keybuf);
    	if (pos == 0)
    	{
    		return -2;//此时代表当前无此键
    	}
    	char* valuebufTmp = strstr(keyvaluebuf, "=")+1;
    	trimSpace(valuebufTmp, valuebuf);
    	*valuebuflen = strlen(valuebuf);
    }
    int trimSpace(char *inbuf, char *outbuf)
    {
    	if (inbuf == NULL || outbuf == NULL)
    	{
    		return -1;
    	}
    	char *in = inbuf;
    	char *out = outbuf;
    	int length = strlen(in) - 1;
    	char *end = in + length;
    	while (isspace(*in))
    	{
    		in++;
    	}
    	while (isspace(*end))
    	{
    		end--;
    	}
    
    	length = end - in + 1;
    	strncpy(out, in, length);
    	*(out + length) = 0;
    	return 0;
    }
    int main()
    {
    	char valuebuf[20];
    	int valuebuflen = 0;
    	getKeyByValue("key1 =   valude1  ", "key1", valuebuf, &valuebuflen);
    	printf("value = %s\n", valuebuf);
    	printf("valuebuflen = %d\n", valuebuflen);
    	printf("\n");
    	system("pause");
    	return 0;
    }

     

    展开全文
  • 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语言 字符串分割

    千次阅读 2020-07-02 12:45:00
    C语言 字符串分割 一、简述 记--字符串分割,strtok()函数的使用例子、自己实现split()函数。 二、例子代码 #include <stdio.h> #include <string.h> /* * 函数:split * 描述:按指定分隔符...
  • C语言字符串分割的两种方式

    千次阅读 2021-04-23 10:09:38
    s[]是原字符串,delim为分隔符 返回:字符串拆分后的首地址。 “拆分”:将分割字符用 '\0’替换 特性: 1)strtok拆分字符串是直接在 原串 上操作,所以要求参1必须,可读可写(char *str = “www.baidu.com” 不行...
  • C语言字符串替换函数strrpl支持中文汉字,解决含中文汉字,可能替换错误的情况。支持GBK、GB18030字符串。
  • C语言字符串-字符串排序

    千次阅读 2020-12-23 19:05:26
    7-3字符串排序 (20分) 本题要求编写程序,读入5个字符串,按由小到大的顺序输出。 输入格式: 输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。 输出格式: 按照...
  • C语言实现合并字符串

    2020-12-23 04:47:34
    使用C语言进行字符串的拼接应该怎么做呢?在先前,我肯定是要定义一个新的“字符串”,然后进行内存的拷贝。其实,有一个printf函数的孪生兄弟可以实现这个功能,那就是sprintf。 其实,在接触操作系统的时候我对这...
  • c语言字符串之拼接函数

    千次阅读 2021-02-11 12:50:37
    //关于字符串的操作要包含头文件sting.h #include<string.h> int main() { //strcat char c1[32] = { 0 }; char c2[32] = { 0 }; strcat(c1, "hello"); printf("%s", c1); strcat(c2, " world"); ...
  • c语言字符串的初始化

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

    千次阅读 2021-05-11 10:52:16
    C语言字符串的替换 我的思路: 遍历字符串,判断是否与修改的字符一至 #include<stdio.h> int main() { int i=0; char ch; char replace; char buf[100] ={0}; printf("请输入一个字符串:\n"); scanf...
  • C语言字符串使用指南

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

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

    千次阅读 2020-03-29 12:48:44
    函数 ReadDat()实现从文件 IN.DAT 中读取一篇英文文章存入到字符串数组 xx 中,请编制函数 SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组 xx 中,...
  • C语言字符串输入输出函数

    千次阅读 多人点赞 2020-03-21 18:36:15
    C语言字符串输入输出函数 (1)putchar()函数 格式: putchar© 功能:向终端输出一个字符 注意:输出的时候不会加回车 (2) getchar()函数 格式:字符型变量=getchar () 功能:从标准输入设备上读取单个字符,返回值...
  • C语言字符串做函数参数

    千次阅读 2020-10-30 09:03:15
    一维字符串内存模型:两种 void copy_str01(char *from, char *to) { for (; *from!=’\0’; from++, to++) { *to = *from; } *to = ‘\0’; } void copy_str02(char *from, char *to) { while(*from!=’\
  • C语言 字符串 查找并替换

    千次阅读 2020-07-02 13:12:07
    编译环境:VS2010。 语言: C。 代码: #include #include #include void str_... } 测试结果: 查找字符串和替换字符串 长度相等 查找字符串的长度 小于 替换字符串的长度 查找字符串的长度 大于 替换字符串的长度 
  • c语言字符串空字符

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

    千次阅读 2019-09-30 10:23:09
    //自定义的求字符串长度函数 int Strlen(const char *str) { int length = 0; while('\0' != str[length]) { length ++; } return length; } //从小到大冒泡排序 void SortString(char *str) { int length ...
  • c语言 字符串清空

    万次阅读 2019-06-11 05:45:09
    假设这个一维字符串数组是str[80]----不一定是一维字符串数组,多维数组,结构都可以。方法1:使用运行库函数memset(): (推荐)memset(str, 0, sizeof(str));方法2:使用Windows API函数ZeroMemory(): ZeroMemory...
  • C语言中,将字符串作为字符数组来处理。C语言规定了一个“字符串结束标志”,以字符‘\0’代表。也就是说,在遇到第一个‘\0’字符时,表示字符串结束,由它前面的字符组成字符串。 一、字符数组 用字符串常量...
  • C语言返回字符串函数共有四种方式,分别如下: 使用堆空间,返回申请的堆地址,注意释放 函数参数传递指针,返回该指针 返回函数内定义的静态变量(共享) 返回全局变量 下面来看看详细的介绍 其实就是要返回一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 380,247
精华内容 152,098
关键字:

c语言字符串

c语言 订阅