C не печатает для цикла - PullRequest
       0

C не печатает для цикла

0 голосов
/ 10 декабря 2018

Я новичок в C, и я делаю некоторые базовые вещи.Я делаю простой тест и по какой-то причине он не работает, когда я пытаюсь напечатать варианты вопроса.

main.c

#include <stdio.h>
#include "app.h"

int main(void){
    startQuiz();
    return 0;
}

app.h

#include <stdio.h>
#include <stdlib.h>


int Question(char text[100], char options[4][40], int rightAns);

void startQuiz(void){
    char q1[4][40] = {
        {'"', 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '"'},
        {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'},
        {'p', 'r', 'i', 'n', 't', '(', '\'', 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\'', ')'},
        {'\'', 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\''}
    };

    char q2[4][40] = {
        {'g', 'e', 't', '_', 't', 'y', 'p', 'e', '(', 'x', ')'},
        {'p', 'r', 'i', 'n', 't', '(', 'x', ')'},
        {'x', '.', 't', 'y', 'p', 'e'},
        {'t', 'y', 'p', 'e', '(', 'x', ')'}
    };

    char q3[4][40] = {
        {'x'},
        {'h', 'e', 'l', 'l', 'o', '_', 'w', 'o', 'r', 'l', 'd'},
        {'e', 'x', 'e', 'c'},
        {'c', 'o', 'm', 'm', 'a', 'n', 'd'}
    };

    int Q1 = Question("what is the output of `print('hello world')`", q1, 2);
    int Q2 = Question("how to get a type of a variable?", q2, 4);
    int Q3 = Question("choose a not valid name for argument in python", q3, 3);

    printf("you got: %d / 3\n", Q1 +Q2 +Q3);
};


int Question(char text[100], char options[4][40], int rightAns){
    int ans;

    printf("\n%s.\n", text);
    for(int i; i<4; i++){
        printf("%d. %s\n", i+1, options[i]);
        // I dont want to add to i I just want to print i+1

    }printf(">>> ");
    scanf("%d", &ans);

    if(ans==rightAns){
        return 1;
    }return 0;
};

Предполагается, что это будет тест, и я получу вывод:

enter image description here

Он не печатает параметры, которые я ему дал:

1 Ответ

0 голосов
/ 10 декабря 2018
for(int i; i<4; i++){

Поскольку вы не присваиваете значение i, оно может иметь любое значение.Это известно как неопределенное поведение.Вы всегда должны убедиться, что переменная имеет значение, прежде чем она будет использована.

Это должно исправить ваш код ...

for(int i=0; i<4; i++){

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

char q1[4][40] = {
    "\"hello world\"",
    "hello world",
    // etc....
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...