gpt4 book ai didi

C 程序使用函数内的指针计算字数

转载 作者:行者123 更新时间:2023-11-30 15:22:15 25 4
gpt4 key购买 nike

我这里有这段代码:我想做的是用 for 循环和索引 [i] 和指针转换部分。

int main()
{ int i;
int nwords;

display_name();
while (TRUE)
{ printf("\nEnter a phrase :");
gets(text);
if (isEmpty(text))
return 0;
// to be replaced in a function int wordcount(); - START //
nwords=0;
for (i=0; text[i] ; i++)
if (text[i]==' ' && text[i+1]!=' ')
nwords++;
nwords++;
printf("Text contains %d words\n",nwords);

所以我做到了,直到这里工作正常:

int main()
{ int i;
int nwords;

display_name();
while (TRUE)
{ printf("\nEnter a phrase :");
gets_s(text);
if (isEmpty(text))
return 0;
// to be replaced in a function int wordcount(); - START //
nwords = 0;
p = text;
for (; *p != '\0'; p++)
if (*p == ' ' && *p + 1 != ' ')
nwords++;

nwords++;
printf("Text contains %d words\n",nwords);

但我的问题是如何将此代码放入函数 wordcount() 中,然后从 main() 调用它?我将代码放在函数中,如下所示:

int wordcount(char *p){
char text[256] ;
int nwords;
nwords = 0;

p = text;
for (; *p != '\0'; p++)
if (*p == ' ' && *p + 1 != ' ')
nwords++;
return nwords;
}

以及函数原型(prototype):

int wordcount(char *p);

我这样调用它,但它不计算单词数,只打印 0。

int main()
{ int i;
int nwords;

display_name();
while (TRUE)
{ printf("\nEnter a phrase :");
gets_s(text);
if (isEmpty(text))
return 0;
// to be replaced in a function int wordcount(); - START //

nwords = wordcount(text);
printf("Text contains %d words\n",nwords);


Student Name : Rasmus Lerdorf
Enter a phrase :asd
Text contains 0 words

Enter a phrase :asdasd
Text contains 0 words

Enter a phrase :asd asdasd
Text contains 0 words

Enter a phrase :asd as as
Text contains 0 words

Enter a phrase :

最佳答案

OP 方法本质上是有问题的。 (假设该单词存在于第一个输入中)
例如待改进如下。

int wordcount(const char *p){
char prev = ' ';
int nwords = 0;

while(*p){
if(isspace(prev) && !isspace(*p)){//isspace in <ctype.h>
++nwords;
}
prev = *p++;
}
return nwords;
}

关于C 程序使用函数内的指针计算字数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29262686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com