2014-10-14 4 views
0

Итак, я проходил онлайн-книгу «Learn C the hard way», и я решил проверить свои навыки с помощью этой программы. Я хочу сделать так, чтобы пользователь мог ввести письмо и посмотреть, соответствует ли он любому из символов секретного слова, чтобы они могли догадаться об этом. Должен ли я использовать операторы if else внутри оператора for? Также я не могу заставить программу сказать мне, что я получил письмо, даже если я его правильно вводил.Попытка понять, как запрограммировать массив в C

#include <string.h> 
#include <stdlib.h> 

int main() 
{ 
    /*Declaring the variables the user needs. One for the 
     the user enters and the other for the secret word.*/ 

    char user_inputted_letter[1]; 
    char secret_word[] = {'Q','u','a','l','m'}; 

    printf("See if you can guess the secret 5 letter word, if you enter in a letter \n" 
      "that matches a letter in the secret word it will be displayed in \n" 
      "a random order for you to guess! \n"); 

    scanf("%s",user_inputted_letter); 
    printf("Your user inputted letter is %s \n",user_inputted_letter); 

    /*for statement to scan each of the characters 
     in secret_word. If statement detects if there is a match 
     between the secret character and inputed value */ 
    int i=0; 
    for(i=0; i < 6;i++) 
    { 
     if(secret_word[i] == user_inputted_letter[1]){ 
      printf("The matching letter you entered with the secret word is %s \n",user_inputted_letter); 
     } 
     else 
      printf("There were no matching letters with the secret word\n"); 
    } 

    return 0; 
} 
+1

Скажет ли книга ничего о массивах, начиная с индекса 0 ? – vanza

+3

Немного вещей - массивы начинаются с индекса 0, а не 1. Во-вторых, поскольку ваш вход имеет только место для одного символа, все, что вы введете, вызовет переполнение буфера; вам нужен второй слот для нулевого терминатора. –

+0

Вы также можете инициализировать массив символов с помощью 'char secret_word [] =« Qualm »;'. Вы можете обнаружить, что это проще при работе со строками. Просто обратите внимание, что создаст постоянный литерал с нулевым завершением (который требуется, если вы хотите обрабатывать «секретное слово» как строку). Это означает, что общая длина 'secret-word' будет' 6' вместо '5'. (он не изменит оставшуюся часть вашего кода) –

ответ

0

Во-первых, вам нужно больше места для ввода. Заменить

char user_inputted_letter[1]; 

с

char user_inputted_letter[100]; 

Во-вторых, вам нужно сравнить все символы. Заменить

if(secret_word[i] == user_inputted_letter[1]){ 

с

if(secret_word[i] == user_inputted_letter[i]){ 

и (как вы только ВГА 5 символов)

for(i=0; i < 6;i++) 

с

for(i=0; i < 5;i++) 
Смежные вопросы