История изменений
Исправление grem, (текущая версия) :
В DrWeb мы просили кандидата ДОМА! написать функцию trimRight, обрезавшую пробелы в конце строки.
Напугаю тебя таким вариантом (после прочтения пары глав K&R и урезания функции которая просто лишние пробелы выкидывает):
#include <stdio.h>
int trimRight (char *str);
int main()
{
char str[256];
printf("Enter string :>>");
int j = 0; //j - счётчик номера символа в массиве
while ((str[j] = getchar()) != '\n') // чтение строки с пробелами
++j;
str[j]='\0'; //добавление конца строки
printf("Your init string :>>%s<<\n", str);
trimRight(str);
printf("Your trimed-Right string:>>%s<<\n", str);
return 0;
}
int trimRight (char *str)
// Функция должна удаять пробелы в конце строки
{
int j = 0, ns=0;
char *temp = str;
while (*(temp+j) != '\0') {
if (*(temp+j) == ' ')
++ns; // счётчик пробелов
if ((ns > 0) && (*(temp+j) != ' '))
ns =0; // обнуление счётчика пробелов
++j; // переход к следующему символу в строке
}
// Отсекание лишних пробелов в конце строки
if ((*(temp+j) == '\0') && (ns > 0))
*(temp+j-ns)='\0';
return 0;
}
Только я не понял, желательно чтобы функция сохраняла оригинальную строку или резала её окончательно и бесповоротно как здесь?
Исправление grem, :
В DrWeb мы просили кандидата ДОМА! написать функцию trimRight, обрезавшую пробелы в конце строки.
Напугаю тебя таким вариантом (после прочтения пары глав K&R и урезания функции которая просто лишние пробелы выкидывает):
#include <stdio.h>
int trimRight (char *str);
int main()
{
char str[256];
printf("Enter string :>>");
int j = 0; //j - счётчик номера символа в массиве
while ((str[j] = getchar()) != '\n') // чтение строки с пробелами
++j;
str[j]='\0'; //добавление конца строки
printf("Your init string :>>%s<<\n", str);
trimRight(str);
printf("Your trimed-Right string:>>%s<<\n", str);
return 0;
}
int trimRight (char *str)
// Функция должна удаять пробелы в конце строки
{
int j = 0, ns=0;
char *temp = str;
while (*(temp+j) != '\0') {
if (*(temp+j) == ' ')
++ns; // счётчик пробелов
if ((ns > 0) && (*(temp+j) != ' '))
ns =0; // обнуление счётчика пробелов
++j; // переход к следующему символу в строке
}
// Отсекание лишних пробелов в конце строки
if ((*(temp+j) == '\0') && (ns > 0))
*(temp+j-ns)='\0';
return 0;
}
Только я не понял, желательно чтобы функция сохраняла оригинальную строку или резала её окончательно и бесповоротно как здесь?
Исправление grem, :
В DrWeb мы просили кандидата ДОМА! написать функцию trimRight, обрезавшую пробелы в конце строки.
Напугаю тебя таким вариантом (после прочтения пары глав K&R и урезания функции которая просто лишние пробелы выкидывает):
#include <stdio.h>
int trimRight (char *str);
int main()
{
char str[256];
printf("Enter string :>>");
int j = 0; //j - счётчик номера символа в массиве
while ((str[j] = getchar()) != '\n') // чтение строки с пробелами
++j;
str[j]='\0'; //добавление конца строки
printf("Your init string :>>%s<<\n", str);
trimRight(str);
printf("Your trimed-Right string:>>%s<<\n", str);
return 0;
}
int trimRight (char *str)
// Функция должна удаять пробелы в конце строки
{
int j = 0, ns=0; //, i = 0;
char *temp = str;
while (*(temp+j) != '\0') {
if (*(temp+j) == ' ')
++ns; // счётчик пробелов
if ((ns > 0) && (*(temp+j) != ' '))
ns =0; // обнуление счётчика пробелов
++j; // переход к следующему символу в строке
}
// Отсекание лишних пробелов в конце строки
if ((*(temp+j) == '\0') && (ns > 0))
*(temp+j-ns)='\0';
return 0;
}
Только я не понял, желательно чтобы функция сохраняла оригинальную строку или резала её окончательно и бесповоротно как здесь?
Исходная версия grem, :
В DrWeb мы просили кандидата ДОМА! написать функцию trimRight, обрезавшую пробелы в конце строки.
Напугаю тебя таким вариантом (после прочтения пары глав K&R):
#include <stdio.h>
int trimRight (char *str);
int main()
{
char str[256];
printf("Enter string :>>");
int j = 0; //j - счётчик номера символа в массиве
while ((str[j] = getchar()) != '\n') // чтение строки с пробелами
++j;
str[j]='\0'; //добавление конца строки
printf("Your init string :>>%s<<\n", str);
trimRight(str);
printf("Your trimed-Right string:>>%s<<\n", str);
return 0;
}
int trimRight (char *str)
// Функция должна удаять пробелы в конце строки
{
int j = 0, ns=0; //, i = 0;
char *temp = str;
while (*(temp+j) != '\0') {
if (*(temp+j) == ' ')
++ns; // счётчик пробелов
if ((ns > 0) && (*(temp+j) != ' '))
ns =0; // обнуление счётчика пробелов
++j; // переход к следующему символу в строке
}
// Отсекание лишних пробелов в конце строки
if ((*(temp+j) == '\0') && (ns > 0))
*(temp+j-ns)='\0';
return 0;
}
Только я не понял, желательно чтобы функция сохраняла оригинальную строку или резала её окончательно и бесповоротно как здесь?