精华内容
下载资源
问答
  • C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全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语言实现字符串拆分操作,把字符串拆分成字符串数组,然后再输出。 使用sstream方法,作为底层驱动操作实现非常方便。
  • 主要介绍了C语言字符串转换为Python字符串的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
  • C语言字符串输入及输出的几种方式

    万次阅读 多人点赞 2018-02-06 00:12:56
    1.字符串数组+初始化 char s1[]="array"; //字符数组 char s2[6]="array"; //数组长度=字符串长度+1,因为字符串末尾会自动添‘\0‘ printf("%s,%c\n",s1,s2[2]); //array,r 2.字符串指针+初始化 char *sp=...

    1.字符串数组+初始化

    char s1[]="array";  //字符数组
    char s2[6]="array";  //数组长度=字符串长度+1,因为字符串末尾会自动添‘\0‘
    printf("%s,%c\n",s1,s2[2]);  //array,r

    2.字符串指针+初始化

    char *sp="pointer";  //字符指针
    printf("%s,%c,%c\n",sp,*sp,*(sp+2));  //pointer,p,i
    3.数组+scanf

    char s1[6];	
    scanf("%s\n",s1);
    printf("%s,%c\n",s1,s1[2]);  //array,r
    4.指针+scanf
    #include <stdio.h>
    #include<stdlib.h>   //该头文件别忘加,否则使用malloc会报错
    int main(){
      char *sp;
      sp=(char *)malloc(sizeof(char));
      scanf("%s\n",sp);
      printf("%s,%c\n",sp,*sp);//pointer,p
      return 0;
    }
    5.指针+数组+scanf

    char str[60], *sp=str;//将数组的首地址str赋给指针变量sp
    scanf("%s\n",sp);
    printf("%s,%c,%c\n",sp,*sp,*(sp+3));//pointer,p,n
    printf("%s,%c,%c\n",str,str[0],str[3]);//pointer,p,n
    6.注意:如下方法控制台运行会终止

    char *sp;//sp未初始化指向不明
    scanf("%s\n",sp);
    printf("%s\n",sp);
    7.用scanf和gets( 字符数组名或指针)进行输入的区别:

    char str1[60],str2[60];
    gets(str1);  //gets()函数将接收输入的整个字符串直到遇到换行为止
    printf("%s\n",str1);
    scanf("%s\n",str2);//scanf如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理
    printf("%s\n",str2);

    8.使用while(scanf("%d",&n)!=EOF){ }实现多组测试数据输入,而不在输入完一组数据后退出控制台

    char s1[60],s2[60];
    int cnt; //用来测试scanf返回被输入函数成功赋值的变量个数
    while((cnt=scanf("%s%s",s1,s2))!=EOF){  //当按下ctr+z终止输入时,scanf会返回EOF(-1)\n
       printf("scanf返回了%d, s1是%s,s2是%s, 这行输出下方可以继续进行输入\n",cnt,s1,s2);
       //scanf若成功输入str1和str2则返回2
    }
    printf("%d",cnt);//当按下ctr+z后会执行该条输出-1
























    展开全文
  • C 字符串

    2021-01-03 01:45:35
    C 语言中,字符串实际上是使用 null 字符 ” 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。 下面的声明和初始化创建了一个 “Hello” 字符串。由于在数组的末尾存储了空字符,...
  • C语言字符串函数大全

    2011-04-22 14:20:37
    C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全
  • c语言字符串函数大全

    2012-04-15 22:33:35
    c语言字符串函数大全 c语言字符串函数大全 c语言字符串函数大全 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语言字符串操作大全

    2011-03-05 20:56:42
    C语言字符串操作大全C语言字符串操作大全C语言字符串操作大全
  • c语言字符串类型转换

    2021-01-10 21:40:50
    c语言字符串类型转换 c标准库 - <stdlib.h> 目录c语言字符串类型转换atoi() -- 字符串转整数atol() -- 字符串转长整数atof() -- 字符串转浮点数strol() -- 字符串转长整数stroul() -- 字符串转无符号长整数...

    c语言字符串类型转换

    c标准库 - <stdlib.h>

    atoi() – 字符串转整数

    声明:
    int atoi(const char *str)

    如果没有执行有效的转换,则返回0

    举个栗子:

    // #include<stdio.h>
    // #include<stdlib.h>
    char str[] = "519";
    int a = atoi(str);
    a = a + 1;
    printf("%d",a);
    // 输出:520
    

    查看更多:https://www.runoob.com/cprogramming/c-function-atoi.html

    atol() – 字符串转长整数

    声明:
    long int atol(const char *str)

    查看更多:https://www.runoob.com/cprogramming/c-function-atol.html

    atof() – 字符串转浮点数

    声明:
    double atof(const char *str)

    查看更多:https://www.runoob.com/cprogramming/c-function-atof.html

    strol() – 字符串转长整数

    声明:
    long int strtol(const char *str, char **endptr, int base)

    参数解释:

    • str用于转换的字符串
    • endptr是一个传出参数,函数返回时指向后面未被识别的第一个字符。
    • 参数base代表采用的进制方式

    实例:

    char str[] = "65 It's a number";
    char *ptr;
    int num;
    num = strtol(str,&ptr,10);
    printf("%d\n",num);
    puts(ptr);
    
    /*输出:
    65
     It's a number
     */
    

    查看更多:
    https://www.runoob.com/cprogramming/c-function-strtol.html
    https://baike.baidu.com/item/strtol/6134558?fr=aladdin

    stroul() – 字符串转无符号长整数

    声明:
    unsigned long int strtoul(const char *str, char **endptr, int base)

    strol()类似

    查看更多:https://www.runoob.com/cprogramming/c-function-strtoul.html

    strod() – 字符串转浮点数

    声明:
    double strtod(const char *str, char **endptr)

    实例:

    char str[] = "3.14159 It's a number";
    char *ptr;
    double num;
    num = strtod(str,&ptr);
    printf("%lf\n",num);
    puts(ptr);
    
    /*输出:
    3.141590
     It's a number
    */
    

    查看更多:https://www.runoob.com/cprogramming/c-function-strtod.html

    sprintf() – 格式化输出到字符串

    这个函数是另一个标准库<stdio.h>

    声明:
    int sprintf(char *str, const char *format, ...)

    sprintf()printf()的用法相似,只不过不是格式化输出到屏幕,而是格式化输出到一个字符串变量

    实例:

    // include<stdio.h>
    char str[80];
    sprintf(str, "Pi 的值 = %f", 3.14159);
    puts(str);
    
    // 输出:Pi 的值 = 3.141590
    

    查看更多:https://www.runoob.com/cprogramming/c-function-sprintf.html

    拓展函数(非标准库函数)

    • itoa():将整型值转换为字符串。

    • ltoa():将长整型值转换为字符串。

    • ultoa():将无符号长整型值转换为字符串。

    • gcvt():将浮点型数转换为字符串,取四舍五入。

    • ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。

    • fcvt():指定位数为转换精度,其余同ecvt()。

    查看更多:https://www.runoob.com/w3cnote/c-int2str.html

    展开全文
  • 字符数组存储在全局数据区或栈区,第二种形式的字符串存储在常量区。全局数据区和栈区的字符串(也包括其他数据)有读取和写入的权限 ! 而常量区的字符串(也包括其他数据)只有读取权限 ! 没有写入权限。 因为 常量...
  • 版权归原作者。 决心使用C语言来做算法题,开头很痛苦。主要是困在了C字符串的输入和赋值。 现总结一下: 1、字符串指针一定要开辟空间后在做输入 char * str; str=(char*)malloc(100*sizeof(char)); s...
  • C语言 字符串分割

    千次阅读 2020-07-02 12:45:00
    C语言 字符串分割 一、简述 记--字符串分割,strtok()函数的使用例子、自己实现split()函数。 二、例子代码 #include <stdio.h> #include <string.h> /* * 函数:split * 描述:按指定分隔符...
  • 1.字符串常量只能读取,不能修改;字符数组可以读取和修改。...2.以指针形式赋值的字符串,只能修改字符串指针,不能修改字符串内容,而字符数组形式的字符串,可以修改字符串中的每个字符。 ...
  • C语言字符串常量

    千次阅读 多人点赞 2019-02-27 20:22:57
    C语言字符串常量 一.字符串常量的声明 char *p = "hello";//指针直接往上戳 一个字符串常量为什么会给一个指针赋值?字符串常量的值是该字符串第一个字母的首地址敲一段代码验证一下 结论:字符串本身是有值的...
  • 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语言字符串操作函数

    2011-10-22 21:47:54
    C 语言字符串操作函数 1. 字符串反转 - strRev 2. 字符串复制 - strcpy 3. 字符串转化为整数 - atoi 4. 字符串求长 - strlen 5. 字符串连接 - strcat 6. 字符串比较 - strcmp 7. 计算字符串中的元音字符个...
  • C语言中,字符的操作有多种方法,这里主要是特有的字符串库函数进行操作,简化编程过程,增强学生对字符串及字符操作的理解。
  • C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在《C语言字符数组和字符串》中已经进行了详细讲解,这里不妨再来演示一下: #include <stdio.h>int main(){ char str[] = ...
  • 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语言字符串常用操作函数C语言字符串、文件操作常用操作函数标准输入/输出重定向文件操作补充 C语言字符串、文件操作常用操作函数 字符串输出 - puts int puts(const char *str) 字符串写入到标准输出 stdout 字符...
  • 包括拷贝字符串,拷贝字符串的一部分,比较字符串字符串右对齐,删去字符串前后的空格,转换字符串,等等。
  • c语言字符串颠倒

    2018-10-28 22:55:04
    C语言实现字符串顺序翻转。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,478,364
精华内容 991,345
关键字:

c字符串