Как я могу переписать массив символов (AKA-строку) новым массивом символов в C? - PullRequest
1 голос
/ 21 апреля 2011
int main(void) {
  ...
  char A[32] = "00000000000000001111111111111110"; 
  ...
  A = "11111111111111111111111111111111";
}

Это ошибочный c-код для того, что я хочу сделать. Я хочу, чтобы строка в памяти была перезаписана новой строкой той же длины. Я продолжаю получать несовместимые типы-подобные ошибки.

Ответы [ 5 ]

3 голосов
/ 21 апреля 2011

Использование strncpy :

char chararray[6];
(void)strncpy(chararray, "abcdefgh", sizeof(chararray));
1 голос
/ 21 апреля 2011

Среди других возможных способов вы можете сделать

memcpy(A, "11111 etc.", 32);

Вы хотите превратить 32 в именованную константу, как минимум.Вы также должны быть осторожны с переполнением буфера;в Си это не проверено.

1 голос
/ 21 апреля 2011

Использование strcpy(char *destination, const char *source);.

#include <string.h>

int main(void) {
  ...
  char A[32] = "00000000000000001111111111111110"; 
  ...
  strcpy(A, "11111111111111111111111111111111");
}

Хотя безопаснее strncpy(char *destination, const char *source, size_t num), что скопирует только количество символов num, предотвращая выход за пределы пункта назначения:

#include <string.h>

int main(void) {
  ...
  char A[32] = "00000000000000001111111111111110"; 
  ...
  strncpy(A, "11111111111111111111111111111111", sizeof(A));
}
0 голосов
/ 21 апреля 2011

взгляните на библиотечную функцию

0 голосов
/ 21 апреля 2011
memcpy(A,"11111111111111111111111111111111",32);
...