C как вывести массив в консоль
Перейти к содержимому

C как вывести массив в консоль

  • автор:

C как вывести массив в консоль

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

#include #include int main()

Выводит **********@. то есть массив и за ним еще несколько лишних символов. в чем может быть проблема?

The First Person!
Форумчанин
Регистрация: 07.08.2007
Сообщений: 228

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

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

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

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

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

#include #include 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 .

Как вывести массив в консоль одной командой?

Как вывести все элементы массива одной командой?
var myArray = ; вывести желательно одной командой, а не так: alert(myArray); alert(myArray);.

Вывести одной командой данные в 2 порта
Скажите, пожалуйста, ведь в STM32 порты ввода-вывода доступны в адресном пространстве подобно.

Одной командой SELECT вывести список сотрудников
Здравствуйте, помогите пожалуйста с запросом. Вот такое задание: Одной командой SELECT вывести.

Как заменить одной командой
как заменить вот этот код на одну строчку for (i = 0; i < kol; i++) fread((mas_Z + i), size.

Регистрация: 06.03.2016
Сообщений: 29
Только через цикл

1 2 3 4 5
int i; for(i = 0; i  number; i++) { printf("%d\n",arr[i]); }

Вот как-то так.
Регистрация: 18.09.2016
Сообщений: 15

Нуу, разве что массив символов char прокатит для printf

char с[6] = "Привет"; printf("%s", c);

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как разделить число на 1024 одной командой
0xFF,0xA0,# IN 0x00,0x62,# STR 0x400,0xD1,# div 1024 0xFF,0xB0,# OUT.

Как отключить несколько служб одной командой?
Например: net stop Wlansvc WdiSystemHost Не работает!

Как создать и удалить темповый файл одной командой?
Как создать и удалить темповый файл одной командой в cmd?

Как проверить все разделы реестра с одной командой?
Как можно проверить три и более разделов реестра, чтобы в итоге выполнилась команда исходя из всех.

Вывести массив

Задан массив из n целых чисел. Вывести его элементы в столбик, не меняя первоначальный порядок.

Входные данные

Первая строка содержит число n (1 ≤ n ≤ 100). Во второй строке записаны n целых чисел, каждое из которых не превышает по модулю 100.

Выходные данные

Вывести элементы массива по одному числу в каждой строке.

Алгоритм решения задачи

  • Читаем массив из строки и выводим каждый элемент в новую строку.

Решение

using System; class Program < static void Main(string[] args) < var n = Convert.ToInt32(Console.ReadLine()); var p = Array.ConvertAll(Console.ReadLine().Split(' '), s => int.Parse(s)); for (int i = 0; i < n; i++) < Console.WriteLine(p[i]); >> > 

Вывод одномерного массива в C++

Программой задаётся одномерный массив, числа которого генерируются произвольно, нужно организовать его вывод с помощью cout. Но при таком выводе:

cout < < m[i]; //без пробелов 

Вывод числе происходит без пробелов, т.е. сплошные цыфры

54216452122454235412 

Как сделать такой вывод

54 21 64 52 12 24 54 23 54 12 

printf - не подходит.
Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
задан 9 янв 2012 в 12:22
11 1 1 золотой знак 2 2 серебряных знака 5 5 бронзовых знаков

6 ответов 6

Сортировка: Сброс на вариант по умолчанию

cout  

Отслеживать
ответ дан 9 янв 2012 в 12:34
1,081 6 6 серебряных знаков 13 13 бронзовых знаков
Не успел это написать.
9 янв 2012 в 12:35
А зачем 2 пробела?
9 янв 2012 в 12:37
не знаю, чтобы мало не показалось 🙂
9 янв 2012 в 12:38
-зачем ты два раза jmp smth поставил?? -а вдруг первый не сработает.
10 янв 2012 в 14:42

cout  

Почему? Нельзя им пользоваться или ты сам такой вывод сделал? А то можно так:

printf("%i ", m[i]); 

Отслеживать
ответ дан 9 янв 2012 в 12:36
5,411 21 21 серебряный знак 32 32 бронзовых знака
через printf преподу не нарв) сказал типо мы такого учили,делай как учили)
9 янв 2012 в 12:38
спасибо всё работает
9 янв 2012 в 12:41

В реальном программировании форматированный вывод через printf() делать проще. Когда все преподу сдадите, сообщите ему об этом, пусть правильно учит.

9 янв 2012 в 14:30

Сишный printf не типобезопасен, поэтому правильно учит. Кстати, я изобрёл свой типобезопасный String::Format. Используется так: int iv=123; double pi=3.1415926; String str=String::Format("iv=; pi=")(iv)(pi); Такое вот форматирование строк при помощи смайликов.

10 янв 2012 в 11:50

Программист С++ должен знать и printf, и scanf, поскольку они реально применяются и масса кода написана с ними. А по поводу типобезопасности,так на этот случай прогеру и голова дана, чтобы ошибки не допускать. Кроме того, компиляторы сразу выдают предупреждения при несоответствии типов.

10 янв 2012 в 12:05

#include #include #include using namespace std; . copy(m, m + sizeof(m)/sizeof(m[0]), ostream_iterator(cout, " ")); cout  

Отслеживать
ответ дан 9 янв 2012 в 19:12
929 7 7 серебряных знаков 8 8 бронзовых знаков

Не для новичков конечно, но поставлю '+'. m + sizeof(m)/sizeof(m[0]) Если не ошибаюсь, это можно заменить на end(m).

11 янв 2012 в 15:16

endl не рекомендуется использовать, лучше - и быстрее - "\n". endl , как бы это сказать, флашит буферы аутпута

2 июл 2016 в 21:14

#include

далее при выводе массива:

cout 

Функция setw делает пробелы между элементами на количество единиц, указанных в скобках.

Отслеживать
206k 28 28 золотых знаков 291 291 серебряный знак 526 526 бронзовых знаков
ответ дан 2 июл 2016 в 20:42
21 1 1 бронзовый знак

setw задает ширину поля вывода (данные + заполнитель), а не 'делает пробелы'. Заполнитель задается через setfill. И задавать ширину все же стоит ПЕРЕД выводом данных, а не после.

2 июл 2016 в 21:31

 cout  

Отслеживать
ответ дан 9 янв 2012 в 12:42
7,293 15 15 серебряных знаков 14 14 бронзовых знаков

#include usin namespace std; int main() < int a[1024]; for(int i=0; i

Отслеживать
ответ дан 10 янв 2012 в 14:44
1,823 5 5 золотых знаков 28 28 серебряных знаков 40 40 бронзовых знаков

Зачем отвечать, если такой ответ уже есть? Тем более, что у тебя ошибка - выход за пределы массива. Так как отсчёт идёт с нуля, послений элемент - 1023, а ты включаешь 1024 в цикл.

10 янв 2012 в 15:26

я не нашел полного ответа. тем более, что ошибка не фатальна и её можно исправить даже, если ты начинающий

10 янв 2012 в 19:11

насчет нефатальной ошибки, это вы зря. подобный выход за пределы массива может привести к повреждению данных, к нарушению безопасности и просто к аварийной выгрузке пограммы.

10 янв 2012 в 20:34

> и просто к аварийной выгрузке пограммы. Вряд ли. На стеке, по-моему, ошибки переполнения буфера не проверяются, поэтому вылет бует только при использовании программой повреждённых данных. >я не нашел полного ответа. Заполнить массив он и сам смог, раз задал вопрос по его выводу. Цикл он тоже объявил судя по тому, что показал результат вывода своей программы без пробелов. >её можно исправить даже, если ты начинающий Когда я был начинающим, я натыкался на такие ошибки. Компилятор о них не сообщает. Только в Visual Studio можно включить анализ кода, при котором он напишет об этой ошибке

11 янв 2012 в 15:13

Возьмем эльфа. Положим, функция main. Первая переменная, что в ней декларируется, это массив. В ходе выполнения программы выделяется место в стеке с помощью изменения содержимого регистра esp. Положим, мы переполнили массив при заполнении. Что лежит за массивом перед доступным функции стеком? char ** argv. Если мы его нарушим, то при попытке прочитать параметры вызова процесса, наступит segmentation fault. Это лишь один из сценариев.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *