Учусь программировать. Учебная программа рассчитана на работу со строками.
#include <stdio.h>
#include <string.h>
int main (void)
{
// Массив, в который помещается считываемая строка
int n = 100;
char masstr[n];
//Запрос ввода строки
printf ("Введите строку:\n");
//Ввод строки
gets(masstr);
//Считаем число символов
n = strlen(masstr);
for (int i=1;i<10;i++)
{
char z = masstr[i];
printf ("%d\n",z);
}
//Вывод результата работы
printf ("Считана строка:\%s \nЧисло символов в строке: %d",masstr,n);
return 0;
}
К примеру вводится текст "1 человек на луне - Юрий гагарин".
Я хочу получать букву/цифру/символ из masstr[n] по её номеру в строке (включая пробелы). Но что то работает не так. Покажите как написать правильно, чтобы всё работало пожалуйста.
П.С Так как только учусь пожалуйста используйте простой код без всяких страшных подключений и непонятных сокращений.
C/C++
Помогите разобраться с программой Си.
1. Эта программа должна иметь расширение .c, а не дефолтовое .cpp. Если оставить дефолтовое расширение, то компилятор будет расценивать её как с++ программу, а в стандарте c++14 функция gets() полностью ликвидирована.
2. Не указан компилятор/ось и версии. Чтобы под виндой использовать русский язык в консоли, придётся использовать платформенные средства. Решение здесь: https://ru.stackoverflow.com/questions/459154/%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9-%D1%8F%D0%B7%D1%8B%D0%BA-%D0%B2-%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8
3. Вот такой блок кода - расширение, поддерживаемое далеко не всеми компиляторами
4. >Я хочу получать букву/цифру/символ из masstr[n] по её номеру в строке (включая пробелы).
Вы их и получаете. Указывайте вид, в каком они вам нужны, если вас не устраивает обычный char и вывод в десятичном формате.
5. n = strlen(masstr); // Не используйте одну переменную для разных целей. Общая длина массива и длина строки в этом массиве - логически разные вещи.
6. В формате вывода "Считана строка:\%s..." первый слэш ошибочен.
2. Не указан компилятор/ось и версии. Чтобы под виндой использовать русский язык в консоли, придётся использовать платформенные средства. Решение здесь: https://ru.stackoverflow.com/questions/459154/%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9-%D1%8F%D0%B7%D1%8B%D0%BA-%D0%B2-%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8
3. Вот такой блок кода - расширение, поддерживаемое далеко не всеми компиляторами
int n = 100;
char masstr[n];
чтобы это собиралось в более стандартных, нужно законстантить n, т.е. const int n = 100;, ну и не использовать n для других вычислений.4. >Я хочу получать букву/цифру/символ из masstr[n] по её номеру в строке (включая пробелы).
Вы их и получаете. Указывайте вид, в каком они вам нужны, если вас не устраивает обычный char и вывод в десятичном формате.
5. n = strlen(masstr); // Не используйте одну переменную для разных целей. Общая длина массива и длина строки в этом массиве - логически разные вещи.
6. В формате вывода "Считана строка:\%s..." первый слэш ошибочен.
Вам нужна практика!, думается у Вас очень старый компилятор, раз допускает функцию gets, без каких либо пояснений со стороны компилятора, у тебя массив masstr-хорошо, но в функцию gets ты передал только точку отсчета в оперативной памяти(указатель) это &masstr[0], не факт что ты введешь меньше (n-1) символов с клавы, если наберешь больше, то будет ошибка сегментации! Поэтому лучше не падай головой на клаву перед сном))
Похожие вопросы
- Помогите разобраться с программой
- Помогите пожалуйста написать программу на Си
- Помогите пожалуйста решить программу на языке СИ!!!
- Помогите пожалуйста написать программу, реализующую десять генераторов псевдослучайных чисел.СИ!!!!
- Помогите плиз написать программу на Си Массив структур
- Помогите, пожалуйста, написать программу на языке Си.
- Помогите пожалуйста с программой, если можно то с комментариями си++
- Помогите с задачкой на Си
- Помоги пожалуйста с программой в С++
- Помогите пожалуйста с программой
2. Уже сделано и применено. Используется Dev-C++ 6.3 ()
3. Согласен. Тут использован грубый костыль. Мысль в том, чтобы длинна строки автоматически подстраивалась под число введённых символов.
4. Вместо соответствующему символу в страке выводится непонятный номер (Скр 1). Так символ 1 должен показывать 1, символ 2 - 2, символ 6 - пробел, символ 7 - знак тире. П.с.Для наглядности скриншота программа была немного отредактирована (Скр 2)
for (int i=1;i<10;i++) // игнорируется нулевой символ, поэтому вывод
// для строки 12345 -.. начинается с символа 2
{
char z = masstr[i];
printf ("%d\n",z); // Если хотите выводить не код символа, а сам символ
// используйте такое форматирование: printf ("%c\n",z);
}