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. Это лишь один из сценариев.