История изменений
Исправление 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;
}
Только я не понял, желательно чтобы функция сохраняла оригинальную строку или резала её окончательно и бесповоротно как здесь?