怎么把指针的字符串给数组
1个回答
展开全部
1. 如何把一个字符指针指向的字符串复制给字符数组
假如有char *p且p已指向一含有10个元素的字符数组,现有目标数组char b[10],则可以有三种函数可以实现字符串复制。
1、strcpy
语法格式: strcpy(目标地址,源地址)
此例语法:strcpy(b,p);
将源地址后的字符逐一复制到目标地址中,直到遇到结束符,如果源串中不含结束符就会造成目标数组越界。
2、strncpy
语法格式:strncpy(目标地址,源地址,字符长度)
此例语法:strncpy(b,p,10);
将源地址开始前n个(指定字符长度)字符逐一复制到目标地址中,不检测结束符也不检测边界,当指定长度大于目标数组长度则会越界。
3、memcpy
语法格式:memcpy(目标地址,源地址,字节长度)
此例语法:memcpy(b,p,sizeof(char)*10);
内存数据块复制,执行效率最高的一个。将源地址开始前n个(指定字符长度*字符的数据宽度)字节的内容复逐一复制到目标地址中,无视数组元素类型,只按字节复制,不检测数组边界,当指定长度大于目标数组长度则会越界。这里需要注意的是数组长度必须通过给定的元素类型获得数据宽度(sizeof(char))然后计算出实际的内存大小。
2. 怎么将指针指向的字符串赋值给数组
#include<stdio.h>
#include<string.h>
char *copystr(const char*s1,char p1[100])
{
int i=0;
while(s1[i]!='\0')
{
p1[i]=s1[i];
i++;
}
p1[i]='\0';
return p1;
}
int main()
{
const char *s="hello! what are you doing?";
char p[100];
char *q;
q=(char*)s;这句话直接把s的地址赋值给q
copystr(s,p);这个是函数一个一个赋值
puts(p);
puts(q);
return 0;
}
3. 如何把一个字符指针指向的字符串复制给字符数组
假如有char *p且p已指向一含有10个元素的字符数组,现有目标数组char b[10],则可以有三种函数可e799bee5baa6e58685e5aeb931333339666639以实现字符串复制。
1、strcpy语法格式: strcpy(目标地址,源地址)此例语法:strcpy(b,p);将源地址后的字符逐一复制到目标地址中,直到遇到结束符,如果源串中不含结束符就会造成目标数组越界。2、strncpy语法格式:strncpy(目标地址,源地址,字符长度)此例语法:strncpy(b,p,10);将源地址开始前n个(指定字符长度)字符逐一复制到目标地址中,不检测结束符也不检测边界,当指定长度大于目标数组长度则会越界。
3、memcpy语法格式:memcpy(目标地址,源地址,字节长度)此例语法:memcpy(b,p,sizeof(char)*10);内存数据块复制,执行效率最高的一个。将源地址开始前n个(指定字符长度*字符的数据宽度)字节的内容复逐一复制到目标地址中,无视数组元素类型,只按字节复制,不检测数组边界,当指定长度大于目标数组长度则会越界。
这里需要注意的是数组长度必须通过给定的元素类型获得数据宽度(sizeof(char))然后计算出实际的内存大小。
4. C语言中如果将一个指针所指向的字符串赋给数组
数组声明的时候就要指定大小的
可以用memcpy,对于字符串,也可以用strcpy或strncpy(需要包含string.h)
比如:
char *p="abc";
char a[10];
memcpy(a,p,sizeof(a));
或者
strcpy(a,p);
或者
strncpy(a,p,sizeof(a));/* 比上面的strcpy安全 */
PS:关于sizeof,取数组的时候是数组的大小,指针的话,32位机器,会是4,所以字符串指针不用sizeof取长度,用strlen();
5. 怎么将指针得到的数据传递给数组
主要是指针数组与数组指针的区别 定义 int (*p)[n];这个是数组指针 ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。
也就是说执行p+1时,p要跨过n个整型数据的长度 定义 int *p[n];这个是指针数组 []优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1是错误的,这样赋值也是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]。
p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。
假如有char *p且p已指向一含有10个元素的字符数组,现有目标数组char b[10],则可以有三种函数可以实现字符串复制。
1、strcpy
语法格式: strcpy(目标地址,源地址)
此例语法:strcpy(b,p);
将源地址后的字符逐一复制到目标地址中,直到遇到结束符,如果源串中不含结束符就会造成目标数组越界。
2、strncpy
语法格式:strncpy(目标地址,源地址,字符长度)
此例语法:strncpy(b,p,10);
将源地址开始前n个(指定字符长度)字符逐一复制到目标地址中,不检测结束符也不检测边界,当指定长度大于目标数组长度则会越界。
3、memcpy
语法格式:memcpy(目标地址,源地址,字节长度)
此例语法:memcpy(b,p,sizeof(char)*10);
内存数据块复制,执行效率最高的一个。将源地址开始前n个(指定字符长度*字符的数据宽度)字节的内容复逐一复制到目标地址中,无视数组元素类型,只按字节复制,不检测数组边界,当指定长度大于目标数组长度则会越界。这里需要注意的是数组长度必须通过给定的元素类型获得数据宽度(sizeof(char))然后计算出实际的内存大小。
2. 怎么将指针指向的字符串赋值给数组
#include<stdio.h>
#include<string.h>
char *copystr(const char*s1,char p1[100])
{
int i=0;
while(s1[i]!='\0')
{
p1[i]=s1[i];
i++;
}
p1[i]='\0';
return p1;
}
int main()
{
const char *s="hello! what are you doing?";
char p[100];
char *q;
q=(char*)s;这句话直接把s的地址赋值给q
copystr(s,p);这个是函数一个一个赋值
puts(p);
puts(q);
return 0;
}
3. 如何把一个字符指针指向的字符串复制给字符数组
假如有char *p且p已指向一含有10个元素的字符数组,现有目标数组char b[10],则可以有三种函数可e799bee5baa6e58685e5aeb931333339666639以实现字符串复制。
1、strcpy语法格式: strcpy(目标地址,源地址)此例语法:strcpy(b,p);将源地址后的字符逐一复制到目标地址中,直到遇到结束符,如果源串中不含结束符就会造成目标数组越界。2、strncpy语法格式:strncpy(目标地址,源地址,字符长度)此例语法:strncpy(b,p,10);将源地址开始前n个(指定字符长度)字符逐一复制到目标地址中,不检测结束符也不检测边界,当指定长度大于目标数组长度则会越界。
3、memcpy语法格式:memcpy(目标地址,源地址,字节长度)此例语法:memcpy(b,p,sizeof(char)*10);内存数据块复制,执行效率最高的一个。将源地址开始前n个(指定字符长度*字符的数据宽度)字节的内容复逐一复制到目标地址中,无视数组元素类型,只按字节复制,不检测数组边界,当指定长度大于目标数组长度则会越界。
这里需要注意的是数组长度必须通过给定的元素类型获得数据宽度(sizeof(char))然后计算出实际的内存大小。
4. C语言中如果将一个指针所指向的字符串赋给数组
数组声明的时候就要指定大小的
可以用memcpy,对于字符串,也可以用strcpy或strncpy(需要包含string.h)
比如:
char *p="abc";
char a[10];
memcpy(a,p,sizeof(a));
或者
strcpy(a,p);
或者
strncpy(a,p,sizeof(a));/* 比上面的strcpy安全 */
PS:关于sizeof,取数组的时候是数组的大小,指针的话,32位机器,会是4,所以字符串指针不用sizeof取长度,用strlen();
5. 怎么将指针得到的数据传递给数组
主要是指针数组与数组指针的区别 定义 int (*p)[n];这个是数组指针 ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。
也就是说执行p+1时,p要跨过n个整型数据的长度 定义 int *p[n];这个是指针数组 []优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1是错误的,这样赋值也是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]。
p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询