我有一个如下代码。
我想计算用分隔符分隔的文本中的单词数
代码编译但停止
有什么问题?
这是我的代码。
#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;
}
答案 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
分配内存。
程序中的错误
修改您的代码,如下所示
...
char *s = NULL;
int count = 0;
s = text;
while(*s);
{
if (*s == delimiter)
{
count++;
}
s++;
}
...