0

我正在 VS 2010 中使用 c 语言开发控制台应用程序

char rsp[25][9]; //rsp is properly populated by another function suppose it contain three values hello,Goodbye,See you

char txt[] = "Message: ";
int i=0;
while(i<25)
{
    strcat(txt,rsp[i]);
    i++;
}

我想将 txt[ ] 与 rsp[ ][ ] 的每个字符串连接起来,但是它在 strcat(txt,rsp[i]) 上崩溃,请指出错误

4

2 回答 2

1

strcat示例将在这里有所帮助。在您的代码中,您需要声明txt大小为 25 * 9 + strlen(""Message: "") 以保存所有字符串,而不是将 txt 声明为字符串“Message:”:

    char bal[] = "Message: ";
    char rsp[25][9]; //rsp is properly populated by another function 
    char *txt;

    txt = (char*) malloc (25*9+strlen(bal)+1); 
    strcpy (txt, bal);  // first copy "Message" to txt
    while(i<25)
   {
    strcat(txt, rsp[i]);
    i++;
   }

在这里了解malloc。不要忘记txt在函数结束时释放。

于 2013-10-02T07:31:06.287 回答
0

问题是txt[]="Message: "已经分配了一个固定的空间(10字节),所以你不能连接更多的字符串。我建议在临时空间中使用 save "Message:" 并使用动态分配为整个消息保留适当的空间

int main()
{
int i=0;
char temp[]="Message: ";
char rsp[25][9];
char *text=malloc(25*9+strlen(temp)+1);
strcpy(txt,temp);
for(;i<25;i++)
    strcat(txt,rsp[i]);
}
于 2013-10-02T09:36:21.507 回答