我正在使用字符指针实现字符串复制功能,但它显示错误。这是代码:
#include<stdio.h>
#include<string.h>
int main()
{
char *s="abc";
char *t;
while((*s)!='\0')
{
*t++=*s++;
}
*t='\0';
printf("%s\n",t);
return 0;
}
答案 0 :(得分:7)
char *t;
没有为你的指针分配内存而你正试图写入它会导致未定义的行为。所以分配内存
char *t = malloc(30); /* size of your choice or strlen(s) + 1*/
使用内存完成后,使用
释放它free(t);
答案 1 :(得分:1)
这可能会导致segmentation fault
原因是:想想char *t
现在指向哪里?
让我们来看看可能性:
1.您的char *t
指向一些无法访问或写保护的内存位置;
2.在某些情况下,你的指针指向一个可以访问并具有所需空间的内存位置,它可能会起作用。这种可能性非常小。
所以,最好使用
char *t=NULL;
t=malloc(sizeof(char)*n); //Dynamic approach
这里n是您分配给t
如果您现在对动态内存分配不满意
为t
保留一些您认为足够的空间。这会浪费一些空间。
完成后,释放分配的空间;
free(t);
注意:始终包含<stdlib.h>
其他malloc将导致警告。