C应用程序在strcat上掉落

C应用程序在strcat上掉落,c,strcat,C,Strcat,当我打以下电话给strcat时,我的申请失败了。你知道为什么吗 char *encryptedLine[255] = {0}; char encryptedLString[8]; sprintf(encryptedLString, "%08lX", L); strcat(*encryptedLine, encryptedLString); *encryptedLine是空指针:它需要指向一个字符缓冲区 *encyptedLine相当于encryptedLine[0],它

当我打以下电话给strcat时,我的申请失败了。你知道为什么吗

char *encryptedLine[255] = {0};  
char encryptedLString[8];        
sprintf(encryptedLString, "%08lX", L);
strcat(*encryptedLine, encryptedLString);  
*encryptedLine是空指针:它需要指向一个字符缓冲区

*encyptedLine相当于encryptedLine[0],它是char*encryptedLine数组中的第一个条目:

这是一个空指针

若要修复,请更改为:

char encryptedLine[255] = { 0 };

strcat(encryptedLine, encryptedString);
或:

我认为您还需要将encryptedLString的大小增加1,如下所示:

将尝试写入9个字符:由空终止符的格式加1指定的8个字符:

char encryptedLString[9];

encryptedLine是由255个指针组成的数组,初始化为NULL*encryptedLine是空指针。您正在将空指针作为第一个参数传递给strcat,因此它失败。

您正在尝试将0作为第一个参数传递给strcat*encryptedLine是encryptedLine[0],您将{0}分配给它

您有一个字符指针数组

您尚未分配任何内存并将其分配给其中任何一个。撞车

/* LINE 1*/ char *encryptedLine[255] = {0};  
char encryptedLString[8];        
sprintf(encryptedLString, "%08lX", L);
strcat(*encryptedLine, encryptedLString);
看看第1行,它将255个指针分配给所有初始化为0的char,然后执行strcat,它将尝试将encryptedLString中的值写入指针*encryptedLine指向的位置,该指针*encryptedLine为NULL,这是不允许的


只要为encryptedLine的指针分配一些内存,这个程序就不会崩溃

你知道什么是char*encryptedLine[255]结构吗?你在sprintf中使用的L是什么?*encryptedLine[255]-你想做什么?所有的反对票是怎么回事?我显然提供了足够的信息来回答这个问题?那么您的意思是我应该删除={0}?这似乎不起作用,您最有可能要删除它*
sprintf(encryptedLString, "%08lX", L);
char encryptedLString[9];
char *encryptedLine[255]
/* LINE 1*/ char *encryptedLine[255] = {0};  
char encryptedLString[8];        
sprintf(encryptedLString, "%08lX", L);
strcat(*encryptedLine, encryptedLString);