以下功能无法正常工作

时间:2013-08-01 11:07:47

标签: c string

我需要编写一个需要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;
}

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

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

From here

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

所以用以下代码替换你的scanf行:

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

如果你使用了gets,它不知道你的缓冲区有多大,而且当读取太大的行时它会崩溃。

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

#include<string.h>
...
printf("Lenght of %s is %d\n", string1, strlen(string1));

答案 2 :(得分:0)

使用[%^ \ n]格式说明符,以便扫描字符串直到&#39; \ n&#39;遇到所以扫描字符串中有空格的问题(例如&#34;你好的字&#34;)将会被解决。

scanf("[%^\n]",straddr);