我需要编写一个需要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;
}
答案 0 :(得分:6)
scanf
将仅输入一个单词..(即)当空格出现时它会中断..
尝试fgets
阅读完整字符串,直到\n
答案 1 :(得分:0)
您可以使用fgets
安全地从文件中获取该行:
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);