2013-12-06 3 views
0

Это одна из тех ночей, когда C просто убивает меня. Как я могу прочитать массив по одному символу за раз и добавить этот символ в конец другого массива?Добавление одного символа из одного массива в другой

  bzero(message, BUFFSIZE); // 1024 bytes 
      strcpy(message, "your_file|"); 

      for (j=0; j<bytes_read; ++j) { 
       fprintf(stdout, "%c", buffer[j]); 
       strcat(message, buffer[j]); //<--THIS FAILS!!! WHY!!!! 
      } 

      fprintf(stdout, "%s\n", message); 

Как однажды профессор сказал мне, что «C вам не нравится». Ну, сегодня вечером я думаю, что C злится на меня.

+0

Один символ в время легкое. 'for (i = 0; i ciphermagi

+0

Пробовал это раньше или так думал. Он работает сейчас. Это не моя ночь ... Спасибо! – Alex

+1

Ну, 'strcat' берет две строки с нулевым завершением в качестве аргументов и добавляет один к другому. Если я правильно понимаю, что 'buffer' является' char * 'или' char [] ', то' buffer [j] 'является' char', а не строкой и поэтому не может использоваться в качестве аргумента для 'strcat'. – ApproachingDarknessFish

ответ

1

strcat() ожидает, что второй аргумент будет const char * (строка C), в то время как вы даете ему char.

Вы можете конвертировать char в C строку, т.е. создать массив

char append[] = { buffer[j], '\0' }` 

или добавить один символ, каждый раз, и в самом конце дописывания нулевого байта:

 bzero(message, BUFFSIZE); // 1024 bytes 
     strcpy(message, "your_file|"); 
     size_t len = strlen(message); 

     for (j=0; j<bytes_read; ++j) { 
      fprintf(stdout, "%c", buffer[j]); 
      message[len++] = buffer[j]; 
     } 

     message[len] = '\0'; 

     fprintf(stdout, "%s\n", message); 
Смежные вопросы