1 Востаннє редагувалося mark_beginner (29.10.2016 21:31:45)

Тема: Поможіть будь ласка з вводом у строковий масив.

http://pastebin.com/UpNy3UMA

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <locale.h>
#include <string.h>
int main(void)
{
    char* cparr[] = { "Львiв", "Хмельницький", /* список міст */
        "Полтава", "Рiвне", "Iвано-Франкiвськ", "Київ" };
    char* nyc[] = { "Нью Йорк", "Манчестер" };
    int rc; /* номер вибраного міста */
    setlocale(0, ".1251");
    //srand(time(NULL)); /* вибір міста */
    //strcpy(*cparr, *nyc);
    int lik = sizeof(nyc) / sizeof(char*);
    while (lik<10)
    {
        printf("fill cities array\n");
        fgets(*(nyc + lik), 20, stdin);//тут мабуть проблема 
        lik++;
    }

    int counter = sizeof cparr / sizeof(char*);
    for (int j = 0; j < sizeof(nyc) / sizeof(char*); j++)
    {
        *(cparr + counter) = *(nyc + j);
        counter++;
    }
    srand(time(NULL));
    rc = rand() % (sizeof cparr / sizeof(char*));
    printf("%d", rand());
    printf("counter %d", counter);
    //printf("/n%d", sizeof(cparr));
    //printf("/n%d", sizeof(char*));
    printf("\nВибране мiсто - %s \n", cparr[rc]);
    for (int i = 0; i < counter; i++)
    {
        printf("%s\n", *(cparr + i));
    }
    getchar();
    return 0;
}
Post's attachments

Записати31242.PNG 14.84 kb, 87 downloads since 2016-10-29 

2

Re: Поможіть будь ласка з вводом у строковий масив.

А що ви хотіли зробити цією операцією?

*(nyc + lik)

От реально цікаво. Чому саме арифметика вказівників?

3 Востаннє редагувалося mark_beginner (29.10.2016 22:41:28)

Re: Поможіть будь ласка з вводом у строковий масив.

(цією операцією хотів розширити масив nyc) буду вдячний якщо ви напишете як правильно зробити (бо так помилка виходить)

4 Востаннє редагувалося koala (29.10.2016 22:46:36)

Re: Поможіть будь ласка з вводом у строковий масив.

А ви в курсі, що сьомий елемент масиву можна записати зрозуміліше, а саме cparr[7] (а cparr[counter] - це вже counter-овий елемент)? Будь ласка, напишіть код таким чином, щоб він був зрозумілим в першу чергу вам, і пошукайте в ньому помилки. Конкретно тут помилка незначна, але, гадаю, ви її не бачите через цю нотацію.

Масиви в C не змінюють розмір. Тим більше не змінюються змінні, яких не змінюють (в операції a+b не змінюються ні a, ні b).
Вам потрібен динамічний масив (malloc/calloc)... або ж просто робіть масив великого розміру, для шкільної роботи цього вистачить.

5

Re: Поможіть будь ласка з вводом у строковий масив.

А "як зробити правильно" - я не знаю, бо ви не написали, що саме має цей код робити.