在C中,使用while循环计算用户输入的字符数

时间:2011-11-14 22:51:28

标签: c loops count while-loop

我是一个完整的编程新手,我知道非常基本的东西很麻烦。我创建了一个用户输入单词的程序,我必须使用while循环来计算单词中的字符数并在屏幕上显示结果。

我很高兴让用户输入单词但我的问题是使用while循环。我只是无法理解如何编码。我真的很感激这方面的一些帮助。

由于

编辑:

这是我到目前为止所做的:

#include <stdio.h>
#include <string.h>

int main(void)
{
char input[30]; 
int wordlen;

printf("please enter a word: \n");
scanf("%29c", input);

while (input < 30);
{
/*Not sure what to put in here*/
printf("Number of letters in input is %s", /*???*/);
}

return 0;
}

另一个编辑:这是作业,但我的讲师是垃圾,并没有很好地解释。我正在努力学习,并想了解它是如何工作的我不一定期待直接的答案。甚至一些关于如何自己解决它的提示也会很棒。感谢


好了经过多次试验和错误,这就是我想出来的。我认为这是正确的,但希望你的意见。请记住,我已经做了不到3周的C,所以我的技术可能很差。感谢大家的投入。

#include <stdio.h>
#include <string.h>

int main(void)
{
char input[30]; 
int i;
int x;
x=0;

printf("please enter a word: \n");
scanf("%29s", input);
i=strlen(input);

while (x < i)
{
 x++;
}
 printf("Number of letters in input is %d", x);


return 0;
}

4 个答案:

答案 0 :(得分:4)

根据homework标记帖子的精神,我删除了我的实施,我将提供提示:

C中的字符串以NULL结尾,这意味着如果你有一个类似&#34; qW3rTy&#34;的字符串。 char [30]指出,在内存中实际上看起来像这样:

input[0] = 'q'
input[1] = 'w'
input[2] = '3'
input[3] = 'r'
input[4] = 'T'
input[5] = 'y'
input[6] = '\0'
... // It doesn't matter what's after here, because the NULL above marks the end.

'\0'是另一种说法,该字节的值实际上为零,即NULL。因此,要计算字符串中的字符数,可以在字符串上循环查找第一个空字符,然后递增计数器。确保你不计算NULL。

答案 1 :(得分:0)

如果要将字符串存储在字符数组中,比如s,最简单的解决方案是使用名为strlen的内置C函数,它可以计算字符串中的字符数

printf("%d\n",strlen(str));

使用while循环,您需要从数组的开头检查,直到达到NULL('\ 0')字符,如下所示:

len = 0;
while(str[len] != '\0')
  len++;
printf("%d\n",len);

答案 2 :(得分:0)

i = strlen(input);
while (x < i){
    x++;
}

与strlen一起计算最多x计数是没有意义的。 只有x = i。 如果计算自身的目的是,计算没有strlen的实际字符。

例)

while (input[x] != '\0'){
    x++;
}

答案 3 :(得分:-1)

#include <stdio.h>
#include <string.h>

int main(void){
    char input[30]; 
    int wordlen;

    printf("please enter a word: \n");
    // %29c is request 29 chars include newline
    // %29s is max 29 chars input exclusive space chars(space, tab, newline..)
    // %*c  is drop out char for newline ('\n' remain buffer)
    // %s is request of C string
    // C string is char sequence , and last char is '\0'
    scanf("%29s%*c", input);
    // strlen is counting C string chars until last '\0' char
    wordlen = strlen(input);

    //while(condition); //this while does not has  block to execute
    //input is constant address , The address comparison(input < 30) is meaningless
    //while break condition as 0==strlen(input) is NG (why reason scanf wait until input)
    //exit loop when input special string "-quit"  
    while (0!=strcmp("-quit", input)){
        printf("Number of letters in input is %d.\n", wordlen);
        printf("please enter a word: \n");
        scanf("%29s%*c", input);
        wordlen = strlen(input);
    }

    return 0;
}