如何删除C中一行末尾的点?这是我当前的代码,但它消除了所有的点,即使在单词的中间。
char *pc;
pc = strtok(acData, " .\n");
答案 0 :(得分:2)
如果您的字符串采用以下格式:word word word.
然后pc[strlen(pc) - 1]
对应\0
和pc[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");