Тема: символьні рядки
в мене є 2 рядки, в одному 4 символи, в іншому 10, яким чином можна в перший рядок переписати символи з 4 по 7 включно другого рядка?
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → символьні рядки
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
в мене є 2 рядки, в одному 4 символи, в іншому 10, яким чином можна в перший рядок переписати символи з 4 по 7 включно другого рядка?
Якщо йдеться про char* — так само, як при роботі з масивами (з тією особливістю, що після останнього символа рядка слід розмістити символ '\0'; відповідно, рядок із чотирьох символів можна оголосити як char s[5] — у перші чотири елементи ми переписуємо потрібні нам символи, а в останній вписуємо 0. Також не забувайте, що індексація елементів масива чи рядка йде з нуля — відповідно, символи з 4-го по 7-й матимуть індекси від 3 до 6 включно).
це я все розумію, я не дожену, яким чином мені це реалізувати. ось частина мого коду
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]);
}
це одна з моїх дурних ідей була, зрозуміле діло вона не робоча, однак, як реалізувати, щоб це працювало я не знаю
Для чого тут strcpy()? Ви ж усередині циклу копіюєте по одному символу (тоді як strcpy призначена для копіювання цілих рядків) — тут треба робити звичайне присвоєння елементів масиву:
code_station[i]=number_phone[i+3]
Після циклу ще зробіть:
code_station[4]='\0'
і далі з code_station можна працювати як із звичайним рядком (вивести на друк, наприклад).
strncpy(code_station, &number_phone[3], 4);
code_station[4]='\0';
По-перше, Ви хотіли написати не code_station[5]='\0';, а code_station[4]='\0';
Далі. Чому немає перевірки на кількість введених символів? Що трапиться, якщо їх менше ніж сім (чи скільки там)? Що трапиться, якще введено більше ніж 10? Якийсь код unsecure.
Дякую за виправлення. Що ж до сек'юрності - то читайте умову: "в одному 4 символи, в іншому 10". Яким чином може статися, що в рядку, в якому 10 символів, їх може бути менше, ніж 7? Звісно, швидше за все, автор питання дійсно не перевіряє коректність, але він поставив конкретне питання - то й отримав конкретну відповідь, а не defensive code на 50 рядків з перевіркою на наявність збоїв в FPU, проблем 2000 і 2038 та того, що це не Сетунь...
Ваша правда. Йдеться про шкільну задачку. Але я б завжди десь прокоментував, що зроблені деякі припущення. Бо інколи бачиш подібне у реальному коді, створеному "досвідченими спеціалістами".
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися