C удалить точку в конце - PullRequest
0 голосов
/ 21 июня 2011

Как я могу удалить точку в конце строки в C?Это мой текущий код, но он удаляет все точки, даже в середине слова.

  char *pc;
  pc = strtok(acData, " .\n");

Ответы [ 3 ]

2 голосов
/ 21 июня 2011

Если ваши строки имеют следующий формат: word word word. Тогда pc[strlen(pc) - 1] соответствует \0, а pc[strlen(pc) - 2] - ., поэтому, pc[strlen(pc) - 2] = '\0'; удалит ..

Если ваши строки содержат \n, тогда вы должны сделать pc[strlen(pc) - 3] = '\0';.

0 голосов
/ 21 июня 2011

Это трюк, который я часто использую для удаления новых строк в конце строк пользовательского ввода.

if ((ln = strlen (str)) > 0)
    if (str[ln-1] == '\n')
        str[ln-1] = '\0';

Вы можете точно тем же способом избавиться от . в конце строки:

size_t ln;
char str[] = "Hello there.";
if ((ln = strlen (str)) > 0)
    if (str[ln-1] == '.')
        str[ln-1] = '\0';

Если во входном формате также есть символ новой строки, вам понадобится небольшое изменение:

size_t ln;
char str[] = "Hello there.\n";
if ((ln = strlen (str)) > 1)
    if (str[ln-2] == '.')
        strcpy (&(str[ln-2]), "\n");
0 голосов
/ 21 июня 2011

вызовите strpbrk () для сопоставления нужного вам символа eol.и установите \ 0

char* ptr = strpbrk(pc, "\r\n.");
if (ptr) *ptr = '\0';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...