Если у меня есть в C с char buffer[256]
, заполняемыми, и я хочу, чтобы скопировать все символы из buffer[5]
в buffer[25]
в char derp[20]
и имею Derp быть нулевым байтом, как я должен это делать?
Редактировать (1): math char derp[21]
Редактировать (2): math! char derp[22]
Чтобы прояснить некоторые вещи, вот некоторые из моего кода и проблем, с которыми я столкнулся с ним:строки копирование части струнного программирования C
char buffer[256];
char derp[20];
...
strncpy(derp, &buffer[5], 20); //copy into derp
printf("buffer: %s\n", buffer); //print what I had
printf("derp: %s\n", derp); //print what I got
buffer
проведет некоторую строку, как «Открыть счет».
То, что я пытаюсь сделать, это скопировать «учетную запись» с buffer
в derp
без копирования «ОТКРЫТО».
Выход вернется:
buffer: OPEN
derp:
Если я изменяю buffer
держать «OPENaccount» без пространства, выход будет возвращать:
buffer: OPEN
derp: account
Я понимаю, что strncpy
может смотреть на непечатаемых по-разному, но то почему мой первый набор результатов ничего не возвращает? Я также попытался изменить &buffer[5]
на &buffer[6]
, но получил тот же результат.
'derp' нуждается в 22 элементах. – BLUEPIXY
@BLUEPIXY, ладно, спасибо. Предполагая, что я инициализирую его вместо 'char derp [21]', как сделать копию из 'buffer' в' derp'? – ChessMuster
Добро пожаловать в переполнение стека. Вскоре прочитайте страницу [О программе]. Я предлагаю вам исправить размер выборки в вашем вопросе, чтобы на него можно было ответить; элементы с 5 по 25 буфера занимают 21 байт, а затем вам нужен нулевой ограничитель. Когда вы это исправите, вы можете объяснить нам, какая у вас проблема? Есть множество способов сделать это - какие (-ы) вы пробовали? В чем была проблема, с которой вы столкнулись? Мы поможем вам разобраться в ваших попытках; мы обычно не идем и не пишем код для вас. –