编写程序,输入一行字符串,统计字符串中字符的个数 c语言 用while循环
时间: 2023-07-16 21:13:53 浏览: 115
下面是用C语言编写的实现:
```c
#include <stdio.h>
int main() {
char str[100];
int count = 0, i = 0;
printf("请输入字符串:\n");
scanf("%s", str);
while (str[i] != '\0') {
count++;
i++;
}
printf("字符个数为:%d\n", count);
return 0;
}
```
解释一下这段代码的主要实现流程:
1. 定义了一个字符串数组 `str`,用于存储输入的字符串。
2. 定义了两个整型变量 `count` 和 `i`,其中 `count` 用于记录字符个数,`i` 用于循环计数。
3. 通过 `scanf` 函数接收用户输入的字符串。
4. 进入 `while` 循环,判断当前字符是否为字符串的结束符 `\0`,如果不是,则将字符个数 `count` 加 1,并将计数器 `i` 加 1。
5. 循环结束后,输出字符个数 `count` 的值。
注意,这里使用了 `scanf` 函数来接收用户输入的字符串,但这种方式有一定的安全隐患。如果用户输入的字符串超过了数组 `str` 的长度,就会发生缓冲区溢出的问题。更好的做法是使用 `fgets` 函数来接收字符串,而且可以限制最大输入长度。
相关问题
C语言要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。 输入 输入一行字符 输出 在一行中输出单词个数 样例输入 复制 Let's go to room 209.
以下是 C 语言代码实现:
```c
#include <stdio.h>
int main()
{
char c;
int count = 0, flag = 0;
// 读取每个字符,统计单词数
while ((c = getchar()) != '\n')
{
if (c == ' ' && flag)
{
// 已经读取到一个单词的结尾
count++;
flag = 0;
}
else if (c != ' ')
{
// 继续读取单词
flag = 1;
}
}
// 处理最后一个单词
if (flag)
{
count++;
}
printf("%d\n", count);
return 0;
}
```
代码思路:
- 读取每个字符,如果遇到空格,则将标记 `flag` 设为 0,表示当前单词已经结束。
- 如果遇到非空格字符,则继续读取当前单词,将标记 `flag` 设为 1。
- 如果遇到空格字符且 `flag` 为 1,则说明当前单词已经结束,将单词计数器 `count` 加 1,并将标记 `flag` 设为 0。
- 最后需要特别处理最后一个单词,如果 `flag` 为 1,则说明最后一个单词还没有统计。
对于样例输入 Let's go to room 209.,程序输出结果为 5。
编写函数:实现输入一个字符串,只保留字符串中的字母字符,并统计新生成字符串中包含字母的个数。函数接口如下。 例如:主程序中输入字符串“My12C!$”,新生成的字符串为“MyC”。用c语言编写
```c
#include <stdio.h>
#include <ctype.h>
int keepLetters(char *str) {
int count = 0;
char *src = str, *dst = str;
while (*src) {
if (isalpha(*src)) {
*dst++ = *src;
count++;
}
src++;
}
*dst = '\0';
return count;
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
int count = keepLetters(str);
printf("新字符串为:%s\n", str);
printf("包含字母的个数为:%d\n", count);
return 0;
}
```
该函数使用指针遍历输入的字符串,只保留其中的字母字符,并统计新生成字符串中包含字母的个数。主程序中调用该函数并输出结果。
阅读全文