精华内容
下载资源
问答
  •  功能说明:将字符串复制到字符数组中。该函数有两个参数。第一个参数为“目标数组”,第二个参数为“字符串”。  参考实例:  var  arrChar: array[0..255] of Char; // 这里声明了长度为256的Char型...
    StrPCopy   功能说明:将字符串复制到字符数组中。该函数有两个参数。第一个参数为“目标数组”,第二个参数为“字符串”。   参考实例:   var     arrChar: array[0..255] of Char; // 这里声明了长度为256的Char型数组   begin     StrPCopy(arrChar, 'Come on, baby!');   end;

    转载于:https://www.cnblogs.com/yoogoo/archive/2012/04/09/2439199.html

    展开全文
  • #include#define N 20 void fun(char *a,char *s) { int i; for(i=0;i;i++) { if(s[i]!='\0') a[i]=s[i]; else a[i]='\0'; } } int main() { char a[N],*b="abcd123efgch";... printf("\nThe
    #include<stdio.h>
    #define N 20
    
    void fun(char *a,char *s)
    {
    	int i;
    	for(i=0;i<N;i++)
    	{
    		if(s[i]!='\0')
    			a[i]=s[i];
    		else
    			a[i]='\0';
    	}
    
    }
    
    int main()
    {
    	char a[N],*b="abcd123efgch";
    	 printf("\nThe b is:%s\n",b);
    	 fun(a,b);
    	 printf("\nThe a is:%s\n",a);
    	 return 0;
    }
    
    
    


    展开全文
  • C语言中字符串数据以字符数组的形式存储; "hello uplooking!"常量字符串 以首地址形式存在 字符数组及大小 char s1[]={'h','e','l','l','o'};//字符数组 sizeof(s1)=5B 字符串数组及大小 char ...

    字符串

    字符串:0或N个有效字符的集合 且以'\0'作为结束标志

    C语言中字符串数据以字符数组的形式存储;

    "hello uplooking!"常量字符串 以首地址形式存在

    字符数组及大小

    char s1[]={'h','e','l','l','o'};//字符数组

    sizeof(s1)=5B

    字符串数组及大小

    char s2[]={'h','e','l','l','o','\0'};                                       //字符串(特殊的字符数组)


               char s3[]={"hello"}       or     char s3[]="hello";          //字符串初始化方式

    sizeof(s2)=6B            sizeof(s3)=6B

    strlen(s2)=5B            //不带'\0'

    字符串常量

    char *s2="hello";                                    //此处"hello"字符串常量  将其首地址赋给s2

               sizeof(s2)=8B

    //s2[0]='M';                                 error!!! 常量 read only

    字符串常量只能读   不能改变其中元素

    字符数组打印

    printf("s2>>>>%s\n",s2);

    %s打印字符串:从首地址开始一次打印每个字符 直到'\0'

    相当于以下代码实现:

        //for(i=0;s[i];i++)
                   for(i=0;s2[i]!='\0';i++)
                   {
                       putchar(s2[i]);
                   }

    字符指针数组大小和main函数中的应用

     char *s3[]={"hello","aa",s1,NULL};                                    //字符指针数组

    sizeof(s3)=4*8=32B

    
    #include <stdio.h>
    
    //int main(void)
    //argc命令行参数的个数  argv命令行参数组成的字符指针数组 且以NULL结束
    int main(int argc,char *argv[])
    {
        int i;
        printf("argc:%d\n",argc);
    
        //for(i=0;i<argc;i++)
        for(i=0;argv[i]!=NULL;i++)
        {
           printf("argv[%d]:%s\n",i,argv[i]);
        }
    
        return 0;
    }
    

     

    const (只读)声明变量不同用法

    int const value=100          or              const int value=100;

    value=1000;                                       //错误:向只读变量‘value’赋值 

     

    const int *ptr=&a    or      int const *ptr=&a;                     //通过该指针不可改变所指向的空间

    *ptr=1000 ;                                                                          //错误:向只读位置‘*ptr’赋值

    常用在传递函数参数  (函数参数不可改变)                      void showArray(const int *ar);


               int *const tt=&a;                                                                 //限定指针变量本身不可改变

    tt=&b;                                                                                  //错误:向只读变量‘tt’赋值

    字符串的一些操作函数

    求字符串的有效字符数 不包含'\0'  返回值为无符号类型
    size_t  strlen(const char *s);

     

    字符串复制
    char *strcpy(char *dest, const char *src);
    char *strncpy(char *dest, const char *src, size_t n);

    char *mystrcpy(char *dest,const char *src)
    {
        int i;
        for(i=0;src[i]!='\0';i++)
        {
            dest[i]=src[i];
        }
        //'\0'
        dest[i]=src[i];
    
        return dest;
    }

    字符串追加
    char *strcat(char *dest,const char *src);
    char *strncat(char *dest,const char *src,size_t n);

    char *mystrcat(char *dest,const char *src)
    {
        //找出dest ‘\0’处
        int i,j;
        for(i=0;dest[i]!='\0';i++)
          ;//empty
        //append
        for(j=0;src[j]!='\0';j++)
        {
           dest[i+j]=src[j];
        }
        dest[i+j]=src[j];//'\0'
        return dest;
    }

    比较字符串:比较字符内容(数值/ascii值)  依次比较每个字符 一旦不相等则比较结束
    如果s1大于s2  返回大于0的值
    如果s1小于s2  返回小于0的值
    如果s1等于s2  返回等于0的值

    int strcmp(const char *s1,const char *s2);
    int strcmp(const char *s1,const char *s2,size_t n);

    
    int mystrcmp(char *s1,char *s2)
    {
        int i;
        for(i=0;s1[i]!='\0';i++)
        {
           if(s1[i]!=s2[i])
              break;
        }
        return s1[i]-s2[i];
    }

    在字符串中找字符 如果找到返回该字符的所在串中地址,
    如果有多个则返回第一个的地址  如果没找到则返回NULL

    char *strchr(const char *s,int c);

    //查找:如果有多个找出第一个
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
         char s[]="hello uplooking how are you?";
         char ch,*t;
    
         printf("s>>>>%s\n",s);
         printf("输入要找的字符:");
         ch=getchar();
    
         t=strchr(s,ch);
         if(t==NULL){
            printf("strchr Not Found.\n");
         }else{
            printf("strchr>>>%s\n",t);
            *t='X';
            printf("s>>>>%s\n",s);
         }
         //将s串的‘o’改为'x';
         while(1)
         {
            t=strchr(s,'o');
            if(t==NULL)  break;
            *t='X';
         }
         printf("s>>>>%s\n",s);
    
         return 0;
    }
    

    在字符串中找字符 如果找到返回该字符的所在串中地址,
    如果有多个则返回最后个的地址  如果没找到则返回NULL

    char *strrchr(const char *s,int c);

    //查找:如果有多个找出最后一个
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
         char s[]="hello uplooking how are you?";
         char ch,*t;
    
         printf("s>>>>%s\n",s);
         printf("输入要找的字符:");
         ch=getchar();
    
         t=strrchr(s,ch);
         if(t==NULL){
            printf("strrchr Not Found.\n");
         }else{
            printf("strrchr>>>%s\n",t);
            *t='X';
            printf("s>>>>%s\n",s);
         }
         //将s串的‘o’改为'x';
         while(1)
         {
            t=strrchr(s,'o');
            if(t==NULL)  break;
            *t='X';
         }
         printf("s>>>>%s\n",s);
    
         return 0;
    }
    

    在字符串中找子串 如果找到返回该子串的所在串中地址,如果没找到则返回NULL
    char *strstr(const char *s,const char *child)

    
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
        char *t,s[]="hello uplooking how are you how are you how are  you";
    
        t=strstr(s,"how");
        if(t==NULL){
          printf("strstr Not Found.\n");
        }else{
          printf("strstr:%s\n",t);
        }
        //统计s中"how"的个数
        int count=0;
        char *temp=s;
        while(1)
        {
            t=strstr(temp,"how");
            if(t==NULL)   break;
            count++;
            //temp=t+strlen("how")
            temp=t+3;//指向找到的"how"的之后位置 为了查找后续的"how"
        }
        printf("\"how\"的个数:%d\n",count);
    
        return 0;
    }
    

    字符串分割
    char *strtok(char *str, const char *delim) 不可重入函数
    char *strsep(char **stringp, const char *delim) 可重入函数

    //不可重入:函数不可以在同一进程的两个不同的点的同时发生调用
    //strtok:不可重入函数  也就说该函数不能在同一个进程的不同线程 或 信号函数 或 中断函数中同时调用
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
        char s[]="hello,uplooking.how are:you";
        char *t;
    
    printf("s>>>>%s\n",s);
        t=strtok(s,", .;\t:?!\n");//分割字符串回 改变原串
    printf("s>>>>%s\n",s);
        while(1)
        {
           if(t==NULL)  break;//分完
           printf("%s\n",t);
    
           //NULL:接着继续分
           t=strtok(NULL,", .;\t:?!\n");
        }
        
        return 0;
    }
    
    //可重入函数
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
        char s[]="hello,uplooking.how are:you";
        char *t,*temp;
    
        //char *strsep(char **stringp, const char *delim);
    
        temp=s;
        while(1)
        {
           printf("temp>>>>>>%s\n",temp);
    
           t=strsep(&temp,", .;\t:?!\n");
           if(t==NULL)  break;//分完
           printf("%s\n",t);
        }
        
        return 0;
    }
    

    数字字符串转化为整数

    atoi  将数字字符串转换为整数  atol  atof

    
    #include <stdio.h>
    #include <stdlib.h>//atoi  将数字字符串转换为整数  atol  atof
    
    int main(void)
    {
        char buf[512];
        printf("input a number string:");
        scanf("%s",buf);
    
        int num;
        printf("buf>>>%s\n",buf);
        num=atoi(buf);
        printf("num:%d\n",num);
    
        return 0;
    }
    
    

     

    内存操作函数

    将s开始的n个字节的内存空间的每个字节设置为c值
    void *memset(void *s,int c,size_t n);

    不可处理重叠区域
    void *memcpy(void *dest,const void *src,size_t n)

    内存复制  C唯一可处理重叠区域的函数
    void *memmove(void *dest,const void *src,size_t n);

    
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
        int  i,value,temp;
        char ar[5],br[5]={11,22,33,44,55};
    
        //清零
        memset(&value,0,sizeof(int));
        //将ar开始的n个字节的内存空间的每个字节设置为0值
        memset(ar,0,sizeof(ar));
    
        temp=5566;
        memcpy(&value,&temp,sizeof(int));//value=temp;
        printf("value:%d\n",value);
    
        //ar=br;//error
        memcpy(ar,br,5*sizeof(int));
        for(i=0;i<5;i++)
        {
           printf("%d ",ar[i]);
        }
        putchar('\n');
    
        //error!!!! 不可处理重叠区域  The  memory areas must not overlap
        //memcpy(br+1,br,4*sizeof(int));//error!!!!!!
        memmove(br+1,br,4*sizeof(int));//C中唯一可处理重叠空间的
        for(i=0;i<5;i++)
        {
           printf("%d ",br[i]);
        }
        putchar('\n');
    
    
        return 0;
    }
    

     

    展开全文
  • <p>I have an array of string elements, and I want to copy the values over to a new array. <p>How can I do that? </div>
  • 字符串字符数组实际上是一系列字符的集合,也就是字符串(String)。 字符串数组在C语言中,没有专门的字符串变量,没有string类型,通常就用一个字符数组来存放一个字符串。C语言规定,可以将字符串直接赋值给字符...

    字符串字符数组实际上是一系列字符的集合,也就是字符串(String)

    字符串数组在C语言中,没有专门的字符串变量,没有string类型,通常就用一个字符数组来存放一个字符串。C语言规定,可以将字符串直接赋值给字符数组

    在C语言中,字符串总是以'\0'作为串的结束符。上面的两个字符串,编译器已经在末尾自动添加了'\0'

    '\0'是ASCII码表中的第0个字符,用 NUL表示,称为空字符。该字符既不能显示,也不是控制字符,输出该字符不会有任何效果,它在C语言中仅作为字符串的结束标志。
    puts 和 printf 在输出字符串时会逐个扫描字符,直到遇见 '\0' 才结束输出。

    注意用字符串给字符数组赋值时由于要添加结束符 '\0',数组的长度要比字符串的长度(字符串长度不包括 '\0')大1。

    例如:

    char str[] = "C program";
    该数组在内存中的实际存放情况为:

    字符串长度为 9,数组长度为 10。

    字符串指针在C语言中,可以通过字符数组存放一个字符串,也可以用字符指针指向一个字符串。


    对指向字符变量的指针变量应赋予该字符变量的地址。如:
    char c, *p=&c;
    表示p是一个指向字符变量c的指针变量。而:
    char *s="C Language";

    则表示s是一个指向字符串的指针变量。把字符串的首地址赋予s。

    拓展:

    字符串复制函数:strcpy(数组2,数组1);

    字符串比较函数:strcmp(数组1,数组2);

    字符串连接函数:strcat(数组1,数组2);   

    字符串转大写函数:strupr(数组);

    展开全文
  • C#——字符串复制+数组复制

    千次阅读 2019-11-26 20:34:15
    CopyTo(要复制字符的起始位置(从第几个字符开始往后复制(不包括第几个字符)),目标字符数组,目标数组中的开始存放位置,要复制的字符个数); //Copy静态方法:string.方法来引用 string str="QiaoPeichen"; ...
  • C++ 字符串字符数组 详解

    万次阅读 多人点赞 2018-03-03 19:28:22
    字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。 下面的声明和初始化创建了一个 “Hello” 字符串。由于在数组的末尾存储了空字符,所以...
  • 数组s1中的字符串复制到数组s2中

    千次阅读 2019-03-14 20:48:05
    #include&quot;stdio.h&quot; #include&quot;string.h&quot; #define N 81 void strcpy(char s2[],char s1[]) { int i,j; i=0;j=0; while(s2[j++]=s1[i++]);...请输入字符串:&
  • 区别:数组字符串存放在全局数据区或栈区,可读可写。指针字符串存放在常量区,只读不能写。 char str[] = “max666”; char * pstr = str; 上面是定义了一个字符串数组及一个指向这个字符串数组的指针,可以通过...
  • c 字符串数组 复制操作

    千次阅读 2018-06-09 16:18:56
    #include &lt;iostream&gt; #include &lt;stdio.h&gt; #define MAX_BUF_SIZE 1000 .../***********************字符串复制**************************************/ char buf[MAX_B...
  • 在程序设计中,为了方便处理,通常把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。...本文主要介绍一维数组、二维数组和字符数组,其余的数组将会在以后的文章中介绍...
  • 利用指针作为游标,编写程序完成将输入字符串复制到一个字符数组中,要求每复制三个字符之后插入一个空格。 例如,若给a输入字符串:ABCDEFGHKIJK,字符数组中的内容为:ABC DEF GHI JK 输入数据不超过100个字符。 ...
  • 字符数组-字符串-字符串处理函数 字符数组就是元素类型为字符...存储字符’b’、‘o’、'y’到字符数组的前三个元素 char c[10]; c[0] = 'b'; c[1] = 'o'; c[2] = 'y'; 定义字符数组的时候对字符数组初始化 3.` ...
  • 字符串字符数组

    2013-10-15 09:31:30
    字符串:是一种特殊的字符数组,C++没有专门的字符串类型,一个字符串即为一个字符数组,不过字符串最后面还有“\0”表示字符串结束 字符串处理函数: strcmp(字符数组名1,字符数组名2):按ASCII码值的顺序...
  • 字符串数组字符串指针的区别。 字符串数组:如 char buf[] = "abcd"; 首先在内存字符常量区分配一块内存空间放下”abcd\0”,然后在栈中分配一块连续的内存空间,将字符常量区的”abcd\0”复制到栈中。...
  • 如何将字符串复制到数组

    千次阅读 2012-12-09 16:21:28
    好久没写过关于C语言的东西,今天发一个. 使用strcpy
  • 如何将一个字符串数组赋值给另一个字符串数组?一开始直接用二维数组赋值,报错了,那么怎么用一个字符串数组初始化另一个字符串数组
  • C++ 字符 字符数组 字符串函数

    千次阅读 2013-11-21 22:17:46
    1. 字符数组初始化 char ch[] = {'C', 'h', 'i', 'n', 'a'}; // 数据只占用5个char类型的空间char ...2. 不能用赋值语句将一个字符串常量或字符数组直接赋给另一个字符数组,如下面: str1[ ]= “China”; (赋值
  • http://blog.csdn.net/chaipp0607/article/details/56676791但是这种方式存在一些弊端,比如字符数组的大小是固定的,在进行字符连接或字符复制时,需要计算字符串字符数组的长度,否则就可能发生一部分字符超出...
  • C语言基础不行,如果有错请大牛指出,让小弟深入学习 ... //如果想将另一个数组复制到这个数组 这个数组必须要有空间存储它才行 //在用VC6.0时不知道为什么不用写数组长度就可以成功,而keil
  • 1、字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'}; 即把10个字符分别赋给str[0]str[9]10个元素 如果花...
  • 字符数组实现字符串复制

    千次阅读 2017-12-28 23:17:41
    //用字符数组实现字符串复制 #include"stdio.h" #define N 100 void MyStrcpy(char dstStr[],char srcStr[]); int main() { char a[N],b[N]; printf("Please input a string:\n"); gets(a);
  • (1)字符串数组的构造函数 字符串数组声明三种方式: String[] array=new String[5]; String[] array=new String[](“aa”,”ss”); String[] array={“aa”,”bb”}; 字符串数组和java.util.Date
  • 现有 MATLAB 函数 clipboard.m 的基本扩展。... 该数组复制为制表符分隔的字符串,并用回车符分隔后续行。 我怀疑有人可能已经创建了这个,但我在交易所找不任何东西。 对不起,如果我正在复制代码。
  • //① 题目叙述:编写一个函数_strcpy,其功能为将...//调用 strcpy 函数将其复制到另一个字符数组中,并输出字符数组的内容;#include<stdio.h>//标准的输入和输出流 #include<stdlib.h>//system(“pause”
  • 字符数组字符串

    万次阅读 2018-11-15 17:27:32
    1. 数组的进阶案例(1)——斐波那契数列 前面我们学过通过递归来求解该数列。 #include&amp;lt;stdio.h&amp;gt; int fb(int n) { if(n==1||n==2) return 1; if(n&amp;gt;2) return fb(n-1)...
  • (2)用字符串初始化字符字符数组 (3)获取字符串的长度 三、字符串与指针 四、字符数组与字符指针 一、字符数组 字符数组是存放字符数据的数组,每个元素都是单个字符。 (1)字符数组的定义 char 数组名...
  • 字符串数组字符串指针

    千次阅读 2016-01-04 19:01:43
    最近在学指针,感觉内容繁多,概念不好掌握,除了上自己班的编程课,还... 给字符数组赋值分两种情况,单字符赋值和字符串赋值。 单字符赋值:可通过数组下标方式或指针方式,引用数组元素,进行赋值 //数组下标法
  • 1、字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'}; 即把10个字符分别赋给str[0]str[9]10个元素 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 284,924
精华内容 113,969
关键字:

字符串复制到字符数组