При отладке происходит ошибка: Вызвано исключение по адресу
0x6E8FD4EC (ucrtbased.dll) в Lab 24.exe: 0xC0000005:
нарушение прав доступа при записи по адресу 0x00500000.
Код
#include <string.h>
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <stdio.h>
int main()
{
printf("Введите текст");
char str[256], tmp;
gets_s(str);
int n = strlen(str), count;
printf("Введите букву:");
char t;
scanf_s("%s", &t);
for (int i = 0; i < n; i++)
{
if (str[i] == t)
{
if (str[i - 1] == 32 && i != 0 || i == 0)
{
count = 0;
while (str[i] != 32 && i < n)
{
i++;
count++;
}
if (str[i - 1] == ',')
for (int j = i - count; str[j] != ','; j++)
printf("%s", str[j]);
printf(" ");
}
}
}
system("pause");
return 0;
}
Буду очень благодарен за помощь!
Если ошибка не при компиляции, а при работе - то если читает char, то надо использовать спецификатор %c, а не %s.
char t;
scanf_s("%s", &t);
=>
char t;
scanf_s("%c", &t, 1);
Это только о слете! О том, будет ли ваша программа работать - разговор отдельный... Например, при выводе вы делаете то же самое - используете не тот спецификатор:
printf("%s", str[j]);
Функция scanf_s требует указания размера принимающего буфера как для формата %s, так и для форматов %c и %[]. Вы же почему-то не указываете размер буфера (почему?), по каковой причине ваш вызов scanf_s некорректен.
Если вы собираетесь читать один символ, то это
char t;
scanf_s("%c", &t, 1u);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости