如何从C中的字符串中删除逗号

How to remove commas from a string in C

假设我有一个字符串“10, 5, 3”,我怎样才能去掉逗号,使字符串只是“10 5 3”?我应该使用 strtok 吗?

创建一个与当前字符串大小相同(+1 为终止字符)的新字符串,一个一个地复制每个字符,并将“,”替换为“”。

for 循环中你会得到这样的东西:

if (old_string[i] == ',')
    new_string[i] = ' ';
else
    new_string[i] = old_string[i];
i++;

那么在for循环之后,别忘了在new_string的末尾加上'\0'。

char *r, *w;
for (w = r = str; *r; r++) {
    if (*r != ',') {
        *w++ = *r;
    }
}
*w = '[=10=]';

这样的事情怎么样? (我的 C 有点生锈,我手边没有编译器,所以请原谅任何语法错误)

char *string_with_commas = getStringWithCommas();

char *ptr1, *ptr2;
ptr1 = ptr2 = string_with_commas;

while(*ptr2 != '[=10=]')
{
    if(*ptr2 != ',') *ptr1++ = *ptr2++;
    else *ptr2++;
}

*ptr1 = '[=10=]';

您也可以使用不同的变量来存储结果,但由于结果字符串的长度保证等于或小于源字符串的长度,因此在我们进行时覆盖它应该是安全的。

的轻微简化。
先做电位赋值再检查空字符

const char *r = str;
char *w = str;
do {
  if (*r != ',') {
    *w++ = *r;
  }
} while (*r++);

程序如下:

#include  <stdio.h>
#include  <conio.h>
    int main()
    {
      int  i ;
      char  n[20] ;

      printf("Enter a number. ") ;
    gets(n) ;
      printf("Number without comma is:") ;
      for(i=0 ; n[i]!='[=10=]' ; i++)
        if(n[i] != ',')
          putchar(n[i]) ;

    }

详细说明可以参考这篇博客:http://tutorialsschool.com/c-programming/c-programs/remove-comma-from-string.php