В C используйте цикл while для подсчета количества символов, вводимых пользователем - PullRequest
2 голосов
/ 15 ноября 2011

Я - новичок в программировании, и у меня много проблем с тем, что, как я знаю, является базовым.Я создаю программу, в которой пользователь вводит слово, и я должен использовать цикл 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 недель, поэтому моя техника может быть плохой.Спасибо за ваш вклад всем.

#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 ]

4 голосов
/ 15 ноября 2011

В духе поста с тегом homework я удалил свою реализацию и вместо этого предложу подсказки:

Строки в C заканчиваются на NULL, это означает, что если у вас есть строка типа«qW3rTy», на который указывает 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.

0 голосов
/ 16 ноября 2011
i = strlen(input);
while (x < i){
    x++;
}

Вы можете сосчитать до количества х вместе с strlen не имеет смысла. Только только х = я. Если цель подсчета состоит в том, чтобы посчитать действительные символы без указания стр.

ех.)

while (input[x] != '\0'){
    x++;
}
0 голосов
/ 15 ноября 2011
#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;
}
0 голосов
/ 15 ноября 2011

Если вы храните строку в массиве символов, скажем, s, самое простое решение - использовать встроенную C-функцию с именем strlen, которая может вычислять количество символов в строке

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

Используя цикл while, вы должны проверять с начала массива, пока не достигнете символа NULL ('\ 0'), который выглядит примерно так:

len = 0;
while(str[len] != '\0')
  len++;
printf("%d\n",len);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...