-2

我需要编写一个需要 2 个单词并计算其长度的函数。我在下面写了一个,但这段代码只适用于第一个字。如何改进它以计算整个句子?

#include <stdio.h>
int findlen(int *s);

int main(void)
{

  char string1[80];
  printf("Enter a string: ");
  scanf("%s", string1);

  printf("Lenght of %s is %d\n", string1, findlen(string1));

}

//find the length of the inputted string
int findlen(char *s)
{

  int count = 0;
  while (*s != '\0')
  {
    s++;
    count++;
  }

  return count;
}
4

3 回答 3

6

scanf将只输入一个单词..(即)出现空格时它会中断..

尝试fgets阅读完整的字符串,直到\n

于 2013-08-01T11:10:13.283 回答
0

您可以使用fgets安全地从文件中获取该行:

从这里

char *fgets(char *s, int size, FILE *stream);

因此,将您的 scanf 行替换为:

fgets(string1, sizeof(string1), stdin);

如果您gets改用它,它不知道您的缓冲区有多大,并且在读取太大的行时会崩溃。

接下来,如果您想知道字符串的长度,可以使用strlen函数string.h

#include<string.h>
...
printf("Lenght of %s is %d\n", string1, strlen(string1));
于 2013-08-01T11:15:15.913 回答
0

使用 [%^\n] 格式说明符,这样它就会扫描字符串直到遇到 '\n' ,这样扫描字符串中有空格(例如“hello word”)的问题就会得到解决。

scanf("[%^\n]",straddr);
于 2015-11-05T19:39:42.617 回答