2016-04-13 3 views
-1
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <string.h> 

int main() 
{ 
    const char mot1[] = "POMME", mot2[] = "POIRE", mot4[] = "PASTEQUE", mot5[] = "MELON", mot6[] = "ORANGE", mot7[] = "FRAISE", mot8[] = "FRAMBOISE", mot9[] = "CITRON", mot10[] = "MANGUE"; 

    srand(time(NULL)); 

    int index = rand() % 10 + 1; 

    char secret[100] = ""; 

    strcpy(motindex, secret); 

    printf("Secret is now %s\n", secret); 

    return 0; 
} 

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

Я хочу заменить index на strcpy(motindex, secret);. Как я могу это сделать ?

+2

Поместите слова в массив указателей. Затем проиндексируйте в массив, чтобы выбрать нужное слово. –

+0

Массив указателей? Вы хотите уточнить? –

+0

Используйте 'char * arr [] = {" word1 "," word2 ", ...};' –

ответ

5

Вы не можете; строки не являются идентификаторами, а идентификаторы не являются строками.
(Имена переменных вообще не существуют в программе - они существуют только в исходном коде.)

Используйте массив и используйте индекс как «имя».

Я также подозреваю, что вы хотите скопировать секрет по-другому, поэтому secret имеет имя плода.

int main() 
{ 
    const char* mot[]= {"POMME", "POIRE", "PASTEQUE", "MELON", "ORANGE", "FRAISE", "FRAMBOISE", "CITRON", "MANGUE"}; 

    srand(time(NULL)); 
    int index = rand() % 9; /* You only have nine strings... */ 

    char secret[100] = ""; 

    strcpy(secret, mot[index]); 

    printf("Secret is now %s\n", secret); 

    return 0; 
} 
+0

Итак, я перевернул вещи в функции 'strcpy'. Спасибо что подметил это. Результат дал мне хороший ответ. Остается только один вопрос: зачем использовать массив bidimensionnal? И почему 128? –

+2

@Gradiuss Я отредактировал код, чтобы соответствовать тому, что, как я полагаю, вам нужно. (Два измерения были необходимы, если вы хотели изменить строки, а 128 были полностью произвольной «мощностью 2, у которой много места».) – molbdnilo

2

Я думаю, что два-тусклый массив может решить вашу проблему список кодов ниже

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

#define SC_NUM 10 
int main(){ 
    const char motSecret[SC_NUM][100] = { 
     "POMME", 
     "POIRE", 
     "PASTEQUE", 
     "MELON", 
     //some more const secret 
    }; 

    int index = ((rand() % SC_NUM) + SC_NUM) % SC_NUM; 
    char secret[100]; 
    strcpy(secret, motSecret[index]); 
    printf("Secret is now %s\n", secret); 
    return 0; 
} 
+1

'((rand()% SC_NUM) + SC_NUM)% SC_NUM' эквивалентно на 'rand()% SC_NUM'. – molbdnilo

+0

Спасибо за помощь, к сожалению, секрет всегда 'MELON' (последний). Так что, может быть, случайная функция не оптимизирована. –

+0

@Gradiuss Google 'srand'. – Lundin

Смежные вопросы