我正在尝试读取字符数,包括空格。 我使用 scanf 函数来检查使用 %c 的字符。另外,我将如何将输入存储到数组中?
#include <stdio.h>
int main(void) {
char n, count= 0;
while (scanf("%c", &n) != EOF) {
count = count+1;
}
printf("%d characters in your input \n", count);
return 0;
}
当我测试输入(带空格)时,例如 abcdefg 它不打印任何东西。
定义 MAX_CHAR 并在循环中检查它可以防止无效的内存写入。 请记住,如果您想打印或使用 char 数组,则数组的最后一个字节应保留为 ' '。
#include <stdio.h>
#define MAX_CHAR 100
int main(void) {
char n[MAX_CHAR]={0}, count= 0;
while((count!=MAX_CHAR-1)&&(scanf("%c",&n[count])==1))
{
if((n[count]=='\n')){
n[count]=0;
break;
}
count++;
}
printf("%d characters in your input [%s]\n", count, n);
return 0;
}
scanf
当到达文件末尾时确实返回 EOF。但是为了让您看到这种情况的发生,您应该在调用程序时为程序提供一个文件输入,如下所示:
./a.out < input.txt
在里面
input.txt
你可以输入任何你想要的文字。但如果你想在命令行中工作,你应该阅读直到找到 \n
#include <stdio.h>
int main(void) {
char n, count = 0;
scanf("%c", &n);
while (n != '\n') {
count = count+1;
scanf("%c", &n);
}
printf("%d characters in your input \n", count);
return 0;
}
如果要将输入存储在数组中,则必须知道输入的大小(或至少可能的最大大小)
#include <stdio.h>
int main(void) {
char n, count = 0;
char input[100]; //the max input size, in this case, is 100
scanf("%c", &n);
while (n != '\n') {
scanf("%c", &n);
input[count] = n; //using count as the index before incrementing
count = count+1;
}
printf("%d characters in your input \n", count);
return 0;
}
此外,如果不知道输入的大小或最大大小,则必须动态更改
input
数组的大小。但我认为现在这对你来说有点先进。
我不知道你要求什么,但我正在搜索一个程序,其中用户输入一个字符串,当他/她在完成字符串后按 Enter 时,程序会停止并告诉他该字符串中的字符数/她进来了。这对我有用。
#include <stdio.h>
int main(void){
char n, count= 0;
while (scanf("%c", &n) && n != '\n')
{
count = count+1;
}
printf("%d characters in your input \n", count);
return 0;
}
您的
printf
不会打印任何内容,因为运行时无法到达它。你的代码永远在 while
循环中循环
while (scanf("%c", &n) != EOF) {
count = count+1;
}
因为在这种情况下
scanf
不会返回EOF