首页 > 解决方案 > 我试图用 C 语言编写一个简单的程序来计算字符串中 char 的数量。但它只计算第一个单词,如果我留下任何空格它就会停止

问题描述

我试图用 C 语言编写一个简单的程序来计算字符串中 char 的数量。但它只计算第一个单词,如果我留下任何空格它就会停止

#include <stdio.h>

int main() {
    char str1[100];
    int i = 0, count = 0;
    printf("enter string:\n");
    scanf("%s", str1);
    while (str1[i] != '\0') {
        i++;
        count++;
    }
    printf("total number of char %d", count);
    return 0;
}

标签: cstringcountchar

解决方案


scanf("%s", str1)读取单个单词并将分隔符(任何空格序列)和输入行的其余部分留在stdin缓冲区中。如果要计算完整输入行中的字符数,请使用fgets()读取整行并在换行符 ( '\n') 处停止,以及字符串 ( '\0') 的末尾。

这是修改后的版本:

#include <stdio.h>

int main() {
    char str1[100];
    int i;

    printf("enter string:\n");
    if (fgets(str1, sizeof str1, stdin)) {
        for (i = 0; str1[i] != '\0'; i++) {
            if (str[i] == '\n') {
                str[i] = '\0';
                break;
            }
        }
        printf("total number of chars: %d\n", i);
    }
    return 0;
}

推荐阅读