• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Работа со строкой

  • Автор темы ALR
  • Дата начала
A

ALR

(с++ builder)
Задание: В консольном режиме написать программу удаления лишнего пробела

Моё решение
Код:
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <conio.h>
#include <string>
#pragma argsused

int main()
{
int i;
String s[15];
printf("Vvedite stroky \n");
scanf("%s",&s);
for (i=0;i<=15;i++) {
if ((s[i]==" ")&&(s[i+1]==" ")){
s->Delete(i+1,1);
}

}
printf("Stroka posle preobrazovaniia: %s",s);
getch();
}

Компилируется. Поле ввода строки ошибка
Project Project2.exe raised exception class EAccessViolation with message "Access violation at address 40006C67. Read of address A2E0A0AB'. Process stopped. Use Step or Run to continue.
ошибка на строке
Код:
if ((s[i]==" ")&&(s[i+1]==" ")){

В чем может быть ошибка? Или я не правильно работаю со строкой?
PS если не там создал тему перенесите пожалуйста

Да и после записи for (i=0;i<=(s->Length())-1;i++) {

такая же ошибка, с другими адресами на файл dstring.h
строку return (Data)? GetRec().length : 0;
 
S

skysun

Если String - класс а не псевдоним char

Смотри что ты здесь объявил - String s[15]; - это массив из 15 объектов класса String, а не строка из 15 символов.

здесь scanf("%s",&s); ты передал ссылку на указатель на начала массива.

s->Delete(i+1,1); удаляешь символ из не существующей строки.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!