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

问题描述

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

#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;
}

解决方法

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;
}