1

Тема: символьні рядки

в мене є 2 рядки, в одному 4 символи, в іншому 10, яким чином можна в перший рядок переписати символи з 4 по 7 включно другого рядка?

2

Re: символьні рядки

Якщо йдеться про char*  — так само, як при роботі з масивами (з тією особливістю, що після останнього символа рядка слід розмістити символ '\0'; відповідно, рядок із чотирьох символів можна оголосити як char s[5] — у перші чотири елементи ми переписуємо потрібні нам символи, а в останній вписуємо 0. Також не забувайте, що індексація елементів масива чи рядка йде з нуля — відповідно, символи з 4-го по 7-й матимуть індекси від 3 до 6 включно).

3 Востаннє редагувалося skyfer (09.06.2015 14:51:54)

Re: символьні рядки

це я все розумію, я не дожену, яким чином мені це реалізувати. ось частина мого коду

int i;
char code_station[5]="",number_phone[11]="";
printf ("Enter number phone\n");
scanf("%s", number_phone);
number_phone[11]='\0';
for(i=0;i<4;i++){
strcpy(code_station[i],mumber_phone[i+3]);
}

це одна з моїх дурних ідей була, зрозуміле діло вона не робоча, однак, як реалізувати, щоб це працювало я не знаю

4

Re: символьні рядки

Для чого тут strcpy()? Ви ж усередині циклу копіюєте по одному символу (тоді як strcpy призначена для копіювання цілих рядків) — тут треба робити звичайне присвоєння елементів масиву:

code_station[i]=number_phone[i+3]

Після циклу ще зробіть:

code_station[4]='\0'

і далі з code_station можна працювати як із звичайним рядком (вивести на друк, наприклад).

5 Востаннє редагувалося koala (10.06.2015 21:12:15)

Re: символьні рядки

strncpy(code_station, &number_phone[3], 4);
code_station[4]='\0';
Подякували: skyfer2

6

Re: символьні рядки

По-перше, Ви хотіли написати не code_station[5]='\0';, а code_station[4]='\0';
Далі. Чому немає перевірки на кількість введених символів? Що трапиться, якщо їх менше ніж сім (чи скільки там)? Що трапиться, якще введено більше ніж 10? Якийсь код unsecure.

Подякували: koala1

7 Востаннє редагувалося koala (10.06.2015 21:16:04)

Re: символьні рядки

Дякую за виправлення. Що ж до сек'юрності - то читайте умову: "в одному 4 символи, в іншому 10". Яким чином може статися, що в рядку, в якому 10 символів, їх може бути менше, ніж 7? Звісно, швидше за все, автор питання дійсно не перевіряє коректність, але він поставив конкретне питання - то й отримав конкретну відповідь, а не defensive code на 50 рядків з перевіркою на наявність збоїв в FPU, проблем 2000 і 2038 та того, що це не Сетунь...

8

Re: символьні рядки

Ваша правда. Йдеться про шкільну задачку. Але я б завжди десь прокоментував, що зроблені деякі припущення. Бо інколи бачиш подібне у реальному коді, створеному "досвідченими спеціалістами".