我是一个完整的编程新手,我知道非常基本的东西很麻烦。我创建了一个用户输入单词的程序,我必须使用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;
}
答案 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;
}