Форум программистов, компьютерный форум CyberForum.ru

Выделение памяти scanf - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти ошибку... http://www.cyberforum.ru/cpp-beginners/thread21797.html
#include <stdio.h> #include <stdlib.h> int main() { int i,j,n,m,p=0,o=0,k=0; int **mass1; printf( "vvedite kol-vo strok v matrice\n"); scanf ("%d", &n); printf( "vvedite kol-vo stolbcov v matrice\n"); scanf("%d", &m);
C++ Определители матрицы найти компактным методом исключения (метод крамера) определители матрицы нужно найти компактным методом исключения (это как?). Коэффициенты представленны структурой компклесного числа в символьной форме. помогите решить!! И чем символьная фрма отличается от алгебраической? http://www.cyberforum.ru/cpp-beginners/thread21776.html
C++ Помогите с выводом комбинаций
Вот есть код для вывода комбинаций символов. Но он почему то ничего не выводит на экран. В чём может быть проблема? #include<stdio.h> #include<string.h> void main() { char *str = "123"; char q, num_1, num_2, pass;
C++ Поменять местами два ряда матрицы с наибольшей и наименьшей сумой элементов
Доброго времени суток. Начал учиться програмировать на С. Столкнулся с некоторыми проблемами при выполнении некоторых задач. Не прошу делать за меня никакую работу, прошу просто посмотреть и помочь советом начинающему. Задача банальна. Надо ввести с клавиатуры прямоугольную матрицу и поменять местами два ряда с наибольшей и наименьшей сумой элементов. Пробовал сделать так: #include...
C++ Может есть варианты по проще?? http://www.cyberforum.ru/cpp-beginners/thread21702.html
решил задачу....но может её можно как нить по проще сделать.. прога удаляет все повторяющиеся символы в строке, не создавая новой строки #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char s="adia baoby dod";
C++ работа с массивами и структурами. Здравствуйте.нужна помощь...у нас есть структура с именем train, в которой описывается пункт назначиения, номер поезда и время отправления.Нужно реализовать введение в массив данных, вывод должен быть по номерам поезда. Также нужно реализовать вывод на экран информации про поезд,номер которого введен с клавиатуры. Вроде все реализовал, кроме вывода на экран информации про поезд,номер которого... подробнее

Показать сообщение отдельно
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,368
26.01.2009, 22:54
Угу. Ну, все это, конечно же, замечательно.... Но вот вопрос: если scanf работает так, как ты пишешь, сможешь ли ты объяснить поведение программы? Исходник:
Код
#include <windows.h>  
#include <stdio.h>  
#include <conio.h>  
   
int main()
{
    char * c = (char *)malloc(sizeof(char));
    printf("Input string c:\r\n");
    scanf("%s", c);
    printf("\r\nc string len %d\r\n", strlen(c));
    printf("\r\nYour c string is:\t%s\r\n", c);

    char * n = (char *)malloc(sizeof(char));
    printf("Input string n:\r\n");
    scanf("%s", n);
    printf("\r\nn string len %d\r\n", strlen(n));
    printf("\r\nYour n string is:\t%s\r\n", n);

    printf("\r\nYour c string is:\t%s\r\n", c);

    _getch();
    free((void *)c);
    free((void *)n);
}
Вывод: компилятор GCC 3.4.1, Release:
Input string c:
asdf

c string len 4

Your c string is: asdf
Input string n:
qwerty

n string len 6

Your n string is: qwerty

Your c string is: asdf
Вроде бы все ок, проведем еще эксперимент?
Input string c:
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

c string len 95

Your c string is: 1111111111111111111111111111111111111111 /// <--- упс! что за фигня???
Your c string is: 11111111111111111111111111111111111 /// <--- и вот это???
Input string n:
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222

n string len 95

Your n string is: 2222222222222222222222222222222222222222222222222222222222222222222222222222
2222222222222222222

Your c string is: 1111111111111111111111111111111111111111 /// <--- что за фигня выводится? почему три раза???
Your c string is: 1111111111111111111111111111111111111111
Your c string is: 1111111111111111111111111111111111111
Продолжаем: MSVC++ 2005, Release:
c string len 4

Your c string is: asdf
Input string n:
qwerty

n string len 6

Your n string is: qwerty

Your c string is: asdf
Вроде все ок, не так ли? Проведем еще эксперимент:
Input string c:
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

c string len 95

Your c string is: 1111111111111111 /// <--- что за фигня?
Your c string is: 1111111111111111
Your c string is: 1111111111111111
Your /// <--- а это что за фигня?
Input string n:
2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222

n string len 94

Your n string is: 2222222222222222222222222222222222222222222222222222222222222222222222222222
222222222222222222

Your c string is: 1111111111111111 /// <--- что за фигня выводится? ась?
Your c string is: 1111111111111111
Your c string is: 1111111111111111
Your c string is: 1111111111111111
Your c
Ну и до кучи - получаем AV при завершении программы. В Release, подчеркиваю!

Итак, как ты объяснишь полученные экспериментальные результаты?

(То, что в Debug программа вылетает с AV, опустим пока за скобки.... Раз уж ты апеллируешь к Release сборке...)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru