问题描述
我尝试用 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;
}