c中的字计数器不起作用

时间:2013-02-01 19:24:38

标签: c string pointers

我有一个如下代码。
我想计算用分隔符分隔的文本中的单词数 代码编译但停止 有什么问题?
这是我的代码。

#include <stdio.h>
#include <string.h>

int WordCount(char *text,char delimiter)
{
    char *s;
    int count = 0;
    strcpy(s,text);
    while(*s){
        if(*s==delimiter){
            count++;
        }
    }
    return count;
}

int main(void)
{
    char *line = "a,b,c,d,e";

    printf("%d\n",WordCount(line,','));
    return 0;
}

3 个答案:

答案 0 :(得分:6)

你忘了增加指针s,因此你有一个无限循环,而不是复制字符串(你需要为其分配内存),只需让它指向输入。

int WordCount(char *text,char delimiter)
{
    char *s = text;
    int count = 0;
    // strcpy(s,text);
    while(*s){
        if(*s==delimiter){
            count++;
        }
        ++s;
    }
    return count;
}

答案 1 :(得分:2)

char *s;
int count = 0;
strcpy(s,text);

s是未初始化的指针而不是数组对象。

答案 2 :(得分:2)

char *s; - 为堆栈或堆中的s分配内存。

程序中的错误

  • 声明时必须将所有变量初始化。
  • 应将有效内存分配/分配给指针变量。
  • Indefinite Loop,它始终检查字符串的第一个字符。

修改您的代码,如下所示

...
char *s = NULL;
int count = 0;
s = text; 
while(*s);
{
    if (*s == delimiter)
    {
        count++;
    }
    s++;
}
...