• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

В Чем Ошибка?

  • Автор темы Автор темы Veesk18
  • Дата начала Дата начала
V

Veesk18

C++:
#include <stdio.h>
#include <stdlib.h>
/*
Написать функцию, которая подсчитывает общее количество различных символов в
данной строке. Прототип функции int function_name (char *s). Проверить работу
функции на строке, введенной с клавиатуры. 
{В приведенных задачах блока не использовать библиотечные функции по обработке строк.
Хранение всех массивов осуществлять в динамической памяти.}
*/
int chars_count(char *s) // описание функции
{
int i=0;
for (i=0; s[i]!=0; i++); // перебираем все символы, увеличивается счетчик i
return --i; // возвращ. знач (i-1)
}

int main()
{
printf("Write a string: \n");

int i=0;
char *s =(char *) malloc(0); // создаем динамическую строку

do
{
realloc(s, sizeof(s)+sizeof(char)); // выделяем память
scanf("%c", &s[i]);				 // считываем с клавиатуры символ
i++;								// увеличиваем счетчик и по кругу
}
while (s[i-1]!=10);				  // До тех пор, пока не нажат enter
s[i]=0;							  // посл. символ = 0

i=chars_count(s);		 // вызываем нашу функцию, передавая ей дин.строку

printf("\nChars count is: %d\n\n", i); // выводим результат на экран

system("PAUSE");	
return 0;
}
 
не работает выдает системное сообщение вот в этом месте scanf("%c", &s);

у меня все работает...странно, что у тебя нет. Только прога считает количество не различных элементов в строке( как у тебя в комментариях указано), а она у тебя считает количество всех символов строки.
 
scanf("%c", &s); выделяется синим цветом и вылезает ошибка вооот
 
А с чего ты взял что так можно строки выделять?
C++:
 char *s =(char *) malloc(0); // создаем динамическую строку
Это равнозначно тому что ты напишешь: char *s = NULL;
А если точнее, то запись char *s = NULL; даже будет вернее чем char *s =(char *)malloc(0);

Смотри прототип функции realloc:
Она не просто так значение возвращает.
 
char *s = NULL; // создаем динамическую строку

do
{
s = realloc( s, i + 1 );; // выделяем память
scanf("%c", &s); // считываем с клавиатуры символ
i++; // увеличиваем счетчик и по кругу
}
while (s[i-1]!=10); // До тех пор, пока не нажат enter
s=0; // посл. символ = 0

i=chars_count(s); // вызываем нашу функцию, передавая ей дин.строку

printf("\nChars count is: %d\n\n", i); // выводим результат на экран

system("PAUSE");
return 0;
ТАК?????????7
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab