Ввести строку, заменить интервалы между словами на 2 пробела - C (СИ) (76700)
Формулировка задачи:
Ввести строку, заменить интервалы между словами на 2 пробела.
Попробовал сосчитать сколько всего символов и переместить их все вправо пока символ после пробела не станет тоже пробелом. Подскажите где ошибка:
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
int main()
{
char str[100];
int i, n;
printf("Vvesti stroku: \n");
gets(str);
for(i=0; i<100 ; i++)
{
if(str[i]=='\0')
{
n=(i-1);
}
}
for(i=0; i<100; i++)
for(n; n<100; n--)
if(str[i]==' ')
{
while(str[i+1] != ' ')
{
str[n]=str[n-1];
}
}
printf("\n stroka: %s \n", str);
return(0);
}
помогите пожалуйста
Решение задачи: «Ввести строку, заменить интервалы между словами на 2 пробела»
textual
Листинг программы
#include "stdio.h"
#include "string.h"
int main()
{
char str[100];
int i, length, n;
printf("Vvesti stroku: \n");
gets(str);
for(i=0; i<100 ; i++)
{
if(str[i]=='\0')
{
length=(i-1);
break;
}
}
for(i=0; i<length; i++)
if(str[i]==' ')
{
n = length + 2;
while(str[i+1] != ' ')
{
str[n]=str[n-1];
n--;
}
length++;
i++;
}
printf("\n stroka: %s \n", str);
return(0);
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем переменные:
- str - массив символов для хранения введенной строки
- i, length, n - целочисленные переменные для работы со строкой
- Выводим сообщение и призыв к вводу строки
- С помощью функции gets() считываем строку из стандартного ввода и сохраняем её в массиве str
- В цикле проходим по всем элементам массива str (кроме последнего, т.к. последний элемент массива - это нулевой символ)
- Проверяем, является ли текущий символ нулевым символом. Если да, то:
- сохраняем длину строки (исключая нулевой символ) в переменную length
- выходим из цикла
- В цикле проходим по всем пробелам в строке (т.е. по всем символам, которые равны ' ')
- Если текущий символ равен ' ', то:
- увеличиваем длину строки на 2 (т.к. вместо одного пробела мы вставляем два)
- в цикле сдвигаем все символы, следующие за текущим пробелом, на один символ вправо (т.к. мы добавили пробел)
- уменьшаем значение переменной length на 1 (т.к. мы только что обработали один пробел)
- Выводим измененную строку
- Возвращаем 0, чтобы указать, что программа успешно завершилась