Решено: массив строк (C (НЕ C++))

Модератор: Модераторы разделов

Аватара пользователя
lolobot
Сообщения: 436
ОС: Gentoo 2008.0

Решено: массив строк

Сообщение lolobot »

Код: Выделить всё

#include <stdio.h>
#define BLA0 "bla bla bla"
#define BLA1 "bla bla"

main()
{
static char* bla[] = {BLA0, BLA1};
printf("%d\n", bla[1]);
}

Хочу, что бы выводилось то, что прописано в define, но после

gcc ttt.c
./a.out

выводится
134513876

Что сделал неправильно?
GNU/Linux forever! [Gentoo 2008.0]
Спасибо сказали:
elf74
Сообщения: 482
Статус: Линуксоид-Самовар :)
ОС: Mandriva Power Pack 2008.0 LCE

Re: Решено: массив строк

Сообщение elf74 »

Подскажите, а вместо "бла бла..." у вас что?
А то не совсем понятно, что конкретно Вы хотели.
Спасибо сказали:
Аватара пользователя
wzrd
Сообщения: 323
ОС: Debian Lenny

Re: Решено: массив строк

Сообщение wzrd »

lolobot писал(а):
27.03.2008 23:34

Код: Выделить всё

#include <stdio.h>
#define BLA0 "bla bla bla"
#define BLA1 "bla bla"

main()
{
static char* bla[] = {BLA0, BLA1};
[u]printf("%d\n", bla[1]);[/u]
}

Хочу, что бы выводилось то, что прописано в define, но после

gcc ttt.c
./a.out

выводится
134513876

Что сделал неправильно?

%d - выводит коды символов. ставьте %s, если строка, %c, если символ.
Спасибо сказали:
Аватара пользователя
lolobot
Сообщения: 436
ОС: Gentoo 2008.0

Re: Решено: массив строк

Сообщение lolobot »

wzrd писал(а):
28.03.2008 00:17
%d - выводит коды символов. ставьте %s, если строка, %c, если символ.

стопудово! спасибо :)
GNU/Linux forever! [Gentoo 2008.0]
Спасибо сказали:
Аватара пользователя
lolobot
Сообщения: 436
ОС: Gentoo 2008.0

Re: Решено: массив строк

Сообщение lolobot »

Вот еще вопрос на засыпку: как сделать так что бы каждый символ входного потока (строка) клался в отдельный ячейку массива?
GNU/Linux forever! [Gentoo 2008.0]
Спасибо сказали:
un-defined
Сообщения: 145
ОС: Kubuntu, Gentoo

Re: Решено: массив строк

Сообщение un-defined »

lolobot писал(а):
07.06.2008 19:52
Вот еще вопрос на засыпку: как сделать так что бы каждый символ входного потока клался в отдельный ячейку массива?


Так char* - это вам уже указатель на массив
Don`t try - just do or do not ©Master Joda
Спасибо сказали:
Аватара пользователя
lolobot
Сообщения: 436
ОС: Gentoo 2008.0

Re: Решено: массив строк

Сообщение lolobot »

un-defined писал(а):
07.06.2008 19:53
lolobot писал(а):
07.06.2008 19:52
Вот еще вопрос на засыпку: как сделать так что бы каждый символ входного потока клался в отдельный ячейку массива?


Так char* - это вам уже указатель на массив

Да нее - это уже совсем из другой оперы: например есть ввод строки scanf("%s\n", a); и надо поместить каждый символ этой строки в новую ячейку массива...
GNU/Linux forever! [Gentoo 2008.0]
Спасибо сказали:
sim1
Сообщения: 155
ОС: GNU,BSD

Re: Решено: массив строк

Сообщение sim1 »

Да нее - это уже совсем из другой оперы: например есть ввод строки scanf("%s\n", a); и надо поместить каждый символ этой строки в новую ячейку массива...

Да нет же все из той. Читайте что такое указатели и массивы.
Строка это массив char (символов). Начало или определенная позиция в строке может быть задана через указатель на char (символ) т.е

char buf[]="test string";
char * ptr;
char ch;

ptr = buf; // ptr теперь указывает на начало строки
ch = ptr[5]; // получить шестой символ
ch = *( ptr+5 ); // или получить шестой символ так

Таким образом, считывая строку scanf-ом вы делаете не что иное, как заполняете массив char-ами (символами).
Спасибо сказали:
Аватара пользователя
Iroln
Сообщения: 201
ОС: openSUSE 10.3

Re: Решено: массив строк

Сообщение Iroln »

Да нее - это уже совсем из другой оперы: например есть ввод строки scanf("%s\n", a); и надо поместить каждый символ этой строки в новую ячейку массива...

Вот что бывает, когда люди не учат матчасть :smartass:

Строка в Си представляет собой массив типа char с нулевым байтом на конце.

char str[10] = {'Й','а',' ','c','т','р','о','к','а','\0'};

length = strlen(str);

> 9


char arr[20] = {'A',' ','й','а',' ','м','а','с','с','и','в',' ','с','и','м','в','о','л','о','в'};

length = strlen(arr);

> не могу знать, что вы от меня хотели, так как не вижу нулевого байта... бегу-бегу... бегу-бегу... да где же он зараза спрятался... во, вижу! вот он, вот вам!
> 165
Тайною мир держится
Спасибо сказали: