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

时间:2015-10-22 20:32:58

标签: c string punctuation

说我有一个“10,5,3”的字符串如何摆脱逗号,所以字符串只是“10 5 3”?我应该使用strtok吗?

5 个答案:

答案 0 :(得分:8)

char *r, *w;
for (w = r = str; *r; r++) {
    if (*r != ',') {
        *w++ = *r;
    }
}
*w = '\0';

答案 1 :(得分:1)

创建一个与当前字符串大小相同的新字符串(终止字符为+1),逐个复制每个字符并替换','通过' &#39 ;.

for循环中你会得到类似的东西:

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

然后在for循环后,不要忘记添加' \ 0'在new_string结束时。

答案 2 :(得分:1)

@melpomene的简化 首先进行潜在的分配,然后检查空字符。

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

答案 3 :(得分:0)

这样的事情怎么样? (我的C略显生锈,我没有编译器方便,所以原谅任何语法bloopers)

char *string_with_commas = getStringWithCommas();

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

while(*ptr2 != '\0')
{
    if(*ptr2 != ',') *ptr1++ = *ptr2++;
    else *ptr2++;
}

*ptr1 = '\0';

您也可以使用不同的变量来存储结果,但由于结果字符串保证与源字符串相等或更短,因此我们可以安全地覆盖它。

答案 4 :(得分:-1)

以下是该计划:

#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]!='\0' ; i++)
        if(n[i] != ',')
          putchar(n[i]) ;

    }

有关详细说明,请参阅此博客:http://tutorialsschool.com/c-programming/c-programs/remove-comma-from-string.php