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 を文字列 "Message: " として宣言する代わりに、txtサイズ 25 * 9 + strlen(""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 バイト) が割り当てられているため、これ以上文字列を連結できないことです。"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 に答える