Случайная строка из массива в c - PullRequest
1 голос
/ 04 января 2011

Я немного новичок в C, но не в программировании.Я пытаюсь создать программу, которая принимает входные данные и отвечает случайной строкой, которая уже сохранена в массиве (например).

Я не пытаюсь создать случайную строку, я хочу, чтобы онибыть "исправленным", как в Java:

String [] sa; 
sa[0] = "Hello, World"; 
sa[1] = "Hi dude!";

Ответы [ 4 ]

5 голосов
/ 04 января 2011
const char *sa[]={"Hello, World","Hi dude!"};

Тогда вы можете сделать

return sa[i];

Возвращаемое значение char *
Просто убедитесь, что i находится в пределах

3 голосов
/ 04 января 2011
#include <stdio.h>
#include <stdlib.h>

int main() {
    const char *messages[] = {
        "Hello!",
        "How are you?",
        "Good stuff!"
    };
    const size_t messages_count = sizeof(messages) / sizeof(messages[0]);
    char input[64];
    while (1) {
        scanf("%63s", input);
        printf("%s\n", messages[rand() % messages_count]);
    }
    return 0;
}
2 голосов
/ 04 января 2011

Непонятно, что именно вы хотите, но вот краткое описание того, как работают строки в C.

В C нет типа данных, подобного String, как в Java. Вы должны использовать массив символов. Для массива строк вы должны использовать двумерный массив символов.

char myStrings[MAX_NUMBER_OF_STRING][MAX_LENGTH_OF_STRING];
1 голос
/ 04 января 2011

Вот что вы ищете:

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

int main(int argc, char** argv)
{
    char buffer[42];
    const char *mytext[] = {"A1", "A2", "A3"};
    scanf("%41s", buffer);
    srand(time(NULL));
    printf("Random text: %s\n", mytext[rand() % (sizeof(mytext) / sizeof(mytext[0]))]);
    return 0;
}
...