抱歉,我现在修改了代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
int i=0;
char** f=NULL;
char* ff=NULL;
ff="abcd";
f=( char**)malloc ((i + 1) * sizeof (char *)+5);
f[0]=ff;
// strcpy(f[0],ff); (this again giving same error)
strncat(f[0],"efg",3);
printf("f : %s",f[0]);
}
Run Code Online (Sandbox Code Playgroud)
我收到一些未处理的异常,Access违规写入错误.任何人都可以解释我在这里做的错误.注意:抱歉,我现在修改了代码:
谢谢你的回答
你将f <-ff
ff指向一个常量char []("abcd")的开头,然后你改变*f的值(这正是*ff)因此 - 访问冲突.
第二个赋值f实际上删除了第一个赋值.要复制原始字符串,您必须使用strcpy.另外,请注意在malloc中保留足够的空间.它必须是最初的四个字符"abcd"加上另外三个"efg"加上一个(结尾\0):
f = (char*)malloc(9); // 5+3+1
strcpy(f, ff);
strncat(f, "efg", 3);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
298 次 |
| 最近记录: |