Функция удаления пробелов в строке - C (СИ)
Формулировка задачи:
Помогите найти ошибку:
void del(char *s1,char *s2)
{
int i,j,k=0;
for(i=j=0;s1[i]!='0';i++)
{
if(s1[i]!=' ')
s2[j++]=s1[i];
}
s2[j]='\0';
}Решение задачи: «Функция удаления пробелов в строке»
textual
Листинг программы
void del(char *s1,char *s2)
{
int i,j,k=0;
for(i=j=0;s1[i]!='0';i++)
{
if(s1[i]!=' ')
s2[j++]=s1[i];
}
s2[j]='\0';
}
int main()
{
char s1[50];
char s2[50];
puts("Enter a string:" );
gets(s1);
del(s1,s2);
printf("New string: %s",s2);
Объяснение кода листинга программы
- В данной функции происходит удаление всех пробелов из строки, переданной в качестве первого аргумента, и сохранение результата в строке, переданной в качестве второго аргумента.
- Присваивается значение 0 (или '\0') целочисленной переменной k, которая будет использоваться как счетчик для строки s2.
- Используется цикл for для прохода по всем символам строки s1. Он начинается с i=0 и продолжается до тех пор, пока s1[i] не станет равным 0 (или '\0').
- Внутри цикла проверяется, является ли текущий символ пробелом. Если нет, то он копируется в строку s2 с помощью индекса j, который увеличивается на 1 после каждой копии.
- После окончания цикла, в строку s2 добавляется символ 0 (или '\0'), чтобы завершить строку.
- В функции main() запрашивается ввод строки с помощью функции gets().
- Введенная строка передается в функцию del() вместе со второй пустой строкой.
- Результат работы функции del() выводится на экран с помощью функции printf().