C在结束处删除点

时间:2011-06-21 03:30:59

标签: c

如何删除C中一行末尾的点?这是我当前的代码,但它消除了所有的点,即使在单词的中间。

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

3 个答案:

答案 0 :(得分:2)

如果您的字符串采用以下格式:word word word. 然后pc[strlen(pc) - 1]对应\0pc[strlen(pc) - 2] .,所以这样做     pc[strlen(pc) - 2] = '\0';它将删除.

如果您的字符串包含\n,那么您应该pc[strlen(pc) - 3] = '\0';

答案 1 :(得分:0)

调用strpbrk()来匹配你想要的eol字符。并设置\ 0

char* ptr = strpbrk(pc, "\r\n.");
if (ptr) *ptr = '\0';

答案 2 :(得分:0)

这是我经常用来在用户输入字符串末尾删除换行符的技巧。

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");