Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2009, 18:46   #1
ray13
 
Регистрация: 27.02.2009
Сообщений: 7
По умолчанию СИ, вывод массива символов

Друзья, подскажите. Нужно занести в массив mas x символов, а потом вывести этот массив.

Код:
#include <stdio.h>
#include <conio.h>
int main()
{
 int i, x=10;
 char mas[x], g='*';
 for(i=0; i<x; i=i+1)
 mas[i]=g;
 printf("%s",mas);
 getch();
}
Выводит **********@. то есть массив и за ним еще несколько лишних символов. в чем может быть проблема?
ray13 вне форума Ответить с цитированием
Старый 15.04.2009, 18:58   #2
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Вот в чем проблема! Поставь mas[x]='\0';

К тому же у тебя помимо этого много ошибок.

%s используется для вывода строки! Для вывода символа, ну и для ввода символа используется %c

printf("%c",mas);

Ну я так понял тебе весь массив надо заполнить символом '*'

for(i=0; i<x; i=i+1){
mas[i]=g;
}


И наконец для вывода всего массива используй puts(mas);

Вот верный код:

Код:
#include <stdio.h>
#include <conio.h>
int main(){
	int i;
	char mas[10], g='*';
	for(i=0;i<10;i=i+1){
		mas[i]=g;
	}
	mas[10]='\0';
	puts(mas);
	getch();
}
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.

Последний раз редактировалось MAKEDON; 15.04.2009 в 19:13.
MAKEDON вне форума Ответить с цитированием
Старый 15.04.2009, 19:39   #3
ray13
 
Регистрация: 27.02.2009
Сообщений: 7
По умолчанию

Спасибо большущее!!
а printf("%c",mas) почему не срабатывает? или массив можно только с помощью puts вывести?

Последний раз редактировалось ray13; 15.04.2009 в 19:45.
ray13 вне форума Ответить с цитированием
Старый 15.04.2009, 19:45   #4
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Можно и так. Только немного подругому. Вот.

Код:
for(i=0;i<10;i++){
printf("%c",mas[i]);
}
Здесь мы выводим по одному символу.

Но puts(mas) явно быстрее.
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.

Последний раз редактировалось MAKEDON; 15.04.2009 в 19:51.
MAKEDON вне форума Ответить с цитированием
Старый 15.04.2009, 23:04   #5
ray13
 
Регистрация: 27.02.2009
Сообщений: 7
По умолчанию

Ясно! Спасибо!!! =)
ray13 вне форума Ответить с цитированием
Старый 15.09.2020, 18:31   #6
a1ma2
Новичок
Джуниор
 
Регистрация: 18.02.2011
Сообщений: 2
По умолчанию

А как вывести весь массив сразу в виде [1, 2, 3]?

Цитата:
Сообщение от MAKEDON Посмотреть сообщение
Можно и так. Только немного подругому. Вот.

Код:
for(i=0;i<10;i++){
printf("%c",mas[i]);
}
Здесь мы выводим по одному символу.

Но puts(mas) явно быстрее.
a1ma2 вне форума Ответить с цитированием
Старый 15.09.2020, 18:35   #7
a1ma2
Новичок
Джуниор
 
Регистрация: 18.02.2011
Сообщений: 2
По умолчанию

Даются данные 1 && 4 (они меняются), нужно вывести массив по порядку с минимума до максимума, без максимального значения, то есть: [1, 2, 3]

Код:
#include <stdio.h>

int* my_range(int param_1, int param_2)
{
    if (param_1 < param_2) { // 1   4
      int len = param_2 - param_1; // 3
      int arr[len];
      for (int i = 0; len > i; i++) {  // 3 > 0
      arr[i] = param_1; 
        param_1++;
      }
	return arr; //висит ошибка
    }
}
ЗЫ Не могу просто вывести результат. Если выводить по одному символу, то все ок.

Последний раз редактировалось a1ma2; 15.09.2020 в 18:37.
a1ma2 вне форума Ответить с цитированием
Старый 16.09.2020, 07:49   #8
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 715
По умолчанию

a1ma2, массив arr нужно создавать динамически. Также неплохо бы вернуть из функции его размер. А снаружи функции не забыть про освобождение памяти.

и ещё ошибка - если у тебя if не сработает, то не будет return для функции. Это неопределённое поведение
Алексей1153 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод в консоли на русском языке символов prikolist Общие вопросы C/C++ 8 06.04.2009 18:52
Вывод символов в StringGrid спиралью и змейкой (Delphi) ekzobyte Помощь студентам 1 02.04.2009 19:34
Возвращение массива символов char ActioNs Общие вопросы C/C++ 3 10.01.2009 02:33
Вывод символов в строке Karl_Karlovi4 БД в Delphi 12 03.06.2008 13:31