scanf中的元素数量不同()

时间:2013-11-06 07:13:03

标签: c scanf

如何告诉我的程序如何更改scanf要读取的元素数量?我希望它读取字符串中的每个字符,字符串的长度可以从一个字符到一百个字符不等。我知道我可以做scanf("%c%c%c%c...")一百次,但有更简单的方法吗?

2 个答案:

答案 0 :(得分:4)

当然,使用fgets()和适当大小的缓冲区:

char buf[LINE_MAX];
if (fgets(buf, sizeof buf, stdin) != NULL) {
    // input is now in `buf'
}

如果您确实无法使用数组,请调用getchar()直到找到换行符:

int sum = 0;

int ch;
while ((ch = getchar()) != EOF && ch != '\n') {
    sum += ch;
}

(这已经做了你想要的,也就是说,它总结了用户输入的字符串的字符代码。)

答案 1 :(得分:1)

你可以这样做

char A[105];
scanf("%s", A);
printf("%s\n", A);

这样,您可以输入各种长度的字符串。如果输入“abc”,则结果为“abc”