Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/725: Рейтинг темы: голосов - 725, средняя оценка - 4.87
9 / 9 / 6
Регистрация: 16.10.2011
Сообщений: 423

Не удается открыть источник файл "stdafx.h" и не только

21.09.2014, 20:20. Показов 139334. Ответов 41
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вообщем ситуация: написал код в универе на visual studio 2008, пришел домой, скопировал этот же код в 2013 версию и получил следующие ошибки: 1)Не удается открыть источник файл "stdafx.h" 2)идентификатор "printf" не определен 3)идентификатор "scanf" не определен. В универе все работает. код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "stdafx.h"
#include <math.h>
#include <conio.h>
#include "clocale"
int kvadur(float a, float b, float c,
           float* x1, float* x2)
 {
  if(a==0.0) return -1;
float d= b*b-4*a*c;
if(d<0.0) return 0;
if(x1==NULL||x2==NULL) return -1;
*x1=(-b+sqrt(d))/(2*a);
*x2=(-b-sqrt(d))/(2*a);
 
if(*x1==*x2) return 1;
return 2;
}
 
int main()
{   
    setlocale(LC_ALL, "Russian");
    printf("\nРешение квадратного уравнения\n");
    printf("\nВедите в одной строке коэффициенты и нажмите <Enter>\n");
    printf("->");
 
    float a,b,c;
    float x1,x2;
 
    scanf("%f%f%f",&a,&b,&c);
 
    int n = kvadur(a,b,c,&x1,&x2);
    switch(n)
    {
    case -1:
        printf("ошибка исходных данных");
        break;
    case 0:
        printf("Уравнение не имеет решения");
        break;
    case 1:
        printf("Корни одинаковые: x=%3.2f",x1);
        break;
    case 2:
        printf("x1=%3.2f x2=%3.2f",x1,x2);
            break;
    }
    printf("\nДля заверешения нажмите любую клавишу...");
    getch();
 
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.09.2014, 20:20
Ответы с готовыми решениями:

Не удается открыть источник файл "stdafx.h
Выдает ошибку &quot;не удается открыть источник файл &quot;stdafx.h&quot;&quot; Подскажите пож-та, в чем проблема? // Легенда программы: имееется небольшой...

Ошибка "E1696 не удается открыть источник файл stdafx.h"
написал вот такую программку для записи в файл #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;algorithm&gt; #include...

Ошибка E1696 не удается открыть источник файл "stdafx.h"
Ошибка (активно) E1696 не удается открыть источник файл &quot;stdafx.h&quot; Серьезность Код Описание Проект Файл Строка Состояние подавления ...

41
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
21.09.2014, 20:25
Цитата Сообщение от serega006 Посмотреть сообщение
#include "stdafx.h"
#include <math.h>
#include <conio.h>
#include "clocale"
Замените на
C++
1
2
3
4
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <locale.h>
1
9 / 9 / 6
Регистрация: 16.10.2011
Сообщений: 423
21.09.2014, 20:28  [ТС]
Выдает новую ошибку: error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
21.09.2014, 20:43
scanf_s - это микрософтовская приблуда.
Поскольку Вы используете C++, то советую все scanf заменить на потоковые классы (cin,cout)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int main()
{   
    setlocale(LC_ALL, "Russian");
    cout<<("\nРешение квадратного уравнения\n";
    cout<<("\nВедите в одной строке коэффициенты и нажмите <Enter>\n->";
    float a,b,c;
    float x1,x2;
 
    //scanf("%f%f%f",&a,&b,&c);
    cin>>a>>b>>c;
 
    int n = kvadur(a,b,c,&x1,&x2);
    switch(n)
    {
    case -1:
        cout<<"ошибка исходных данных";
        break;
    case 0:
        cout<<"Уравнение не имеет решения";
        break;
    case 1:
        cout<<"Корни одинаковые: x=%3.2f"<<x1<<endl;
        break;
    case 2:
        cout<<"x1="<<x1<<' '<<"x2="<<x2<<endl;
        break;
    }
    system("pause");
     return 0;
}
1
9 / 9 / 6
Регистрация: 16.10.2011
Сообщений: 423
21.09.2014, 20:56  [ТС]
Дело в том что в универе мы вроде как пишем на си, но в визуале так же выбираем проект с++, моя цель это возможность компилировать тот код который я делаю в универе дома, без установки визуала 2008 года. Может можно как то подключить stdafx.h? как я понял printf и scanf в нем и лежат.
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
21.09.2014, 21:03
Цитата Сообщение от serega006 Посмотреть сообщение
Может можно как то подключить stdafx.h? как я понял printf и scanf в нем и лежат.
printf и scanf Лежат в <stdio.h>
А stdafx.h - это файл предварительно скомпилированных заголовков.
Если создается пустой проект, то такой файл включать не надо.
1
9 / 9 / 6
Регистрация: 16.10.2011
Сообщений: 423
21.09.2014, 21:21  [ТС]
То есть из вариантов только качать 2008 версию и более никак?
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
21.09.2014, 21:32
Нелогичный вывод.
Поменяйте scanf на scanf_s и ВСЕ!
1
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
21.09.2014, 21:51
Лучший ответ Сообщение было отмечено Убежденный как решение

Решение

Цитата Сообщение от serega006 Посмотреть сообщение
как я понял printf и scanf в нем и лежат.
printf и scanf это небезопасные функции
соответственно микрософт ввел свои( scanf_s)
до 2010 scanf вызывал предупреждение, сейчас ошибку
где то это отключается,но у меня фирменная 2008,менять не планирую, посему не могу подсказать где, поищи по форуму
или воспользуйся советом zss, тем более что scanf_s в 2008 есть
1
9 / 9 / 6
Регистрация: 16.10.2011
Сообщений: 423
21.09.2014, 22:11  [ТС]
Увы scanf_s не спасает, на этот раз ошибка error C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details. И что то мне подсказывает что в дальнейшем при попытке запустить код с универа дома будут возникать проблемы требующие изменения кода, а чем дальше в лес тем больше кода придется править, поэтому более логичного решения кроме как поставить версию 2008, которая каким то неизвестным мне способом компилирует то что не компилирует 2013.
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
21.09.2014, 22:14
То же самое замените getch на _getch

Добавлено через 1 минуту
Не будет - в 2008 студии - это выводилось как предупреждения.
1
9 / 9 / 6
Регистрация: 16.10.2011
Сообщений: 423
21.09.2014, 23:07  [ТС]
А проблемки все таки возникают не только со scanf и и getch. Вот например второй код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include "clocale"
#define FNAME "D:\\numbers.txt"
#define N 5
 
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    char fname[20]=FNAME;
    FILE* out;
    int n;
 
    printf("Создание файла\n");
    printf("Введённые числа будут записаны в файл: %s\n\n", fname);
    printf("После ввода каждого числа нажимайте <Enter>\n");
 
    out=fopen(fname, "wt");
    if(out==NULL)
    {
        printf("Ошибка открытия файла для записи\n");
        getch();
        return 1;
    }
 
    for (int i=0; i<N; i++)
    {
        printf("->");
        scanf("%i",&n);
        fprintf(out, "%i ",n);
    }
 
    fclose(out);
    printf("\nВведённые числа записаны в файл %s\n", fname);
    printf("Для завершения нажмите <Enter>");
    getch();
 
    return 0;
}
Итак первая и единственная ошибка намекает сменить fopen на fopen_s, заменяем и получаем вместо нее 4 ошибки: 1) error C2660: fopen_s: функция не принимает 2 аргументов 2) значение типа "errno_t" нельзя присвоить сущности типа "FILE *" 3)аргумент типа "char *" несовместим с параметром типа "FILE **" 4)слишком мало аргументов в вызове функции.
И собственно из этого я и сделал вывод что в дальнейшем придется много чего править что бы запустить компиляцию.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
21.09.2014, 23:15
Цитата Сообщение от serega006 Посмотреть сообщение
rror C2660: fopen_s: функция не принимает 2 аргументов
правильно
это безопасная функция, ей нужно еще количество символов дать

приведу пример чтоб было понятно
C++
1
2
char buf[2];
scanf("%s",buf);
теперь введи строку символов этак на 100( можно и меньше, главное чтобы больше чем один символ)
и все программа рухнет, переполнение стека
в scanf_s вводишь количество символов(2) и можешь хоть завводится, больше 2х символов не запишет

вывод: или пользуйся микросовтовскими примочками, или используй другой компилятор, например Qt он бесплатный
1
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.09.2014, 23:55
Цитата Сообщение от serega006 Посмотреть сообщение
Выдает новую ошибку: error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
Как отключить в свойсвах проекта:
https://www.cyberforum.ru/post5488517.html
Или, выше всех инклудов, прописать: #define _CRT_SECURE_NO_WARNINGS (для getch() не работает, нужно заменить на _getch()).
Или ниже всех инклудов прописать: #pragma warning(disable : 4996)
2
Рожденная для битвы
 Аватар для marina2
294 / 72 / 15
Регистрация: 08.11.2009
Сообщений: 1,272
06.10.2014, 09:08
alsav22, #define _CRT_SECURE_NO_WARNINGS не помогло почему-то, только #pragma warning(disable : 4996)

Что означает тип errno_t?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.10.2014, 09:12
Цитата Сообщение от marina2 Посмотреть сообщение
#define _CRT_SECURE_NO_WARNINGS не помогло почему-то
В каком коде? Выше всех инклудов писали? Список ошибок.
0
Рожденная для битвы
 Аватар для marina2
294 / 72 / 15
Регистрация: 08.11.2009
Сообщений: 1,272
06.10.2014, 09:18
alsav22, необходимо же после всех ошибок. Беда в том, что от него никакого толка. Все равно вылазит ошибка
C++
1
Error   1   error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.  c:\users\marina\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.10.2014, 09:20
Цитата Сообщение от marina2 Посмотреть сообщение
необходимо же после всех ошибок.
Что после всех ошибок? Код покажите.
0
Рожденная для битвы
 Аватар для marina2
294 / 72 / 15
Регистрация: 08.11.2009
Сообщений: 1,272
06.10.2014, 09:24
alsav22, необходимо же после всех инклудов. Правка

Добавлено через 1 минуту
Подскажите лучше про Что означает тип errno_t?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.10.2014, 09:29
Цитата Сообщение от marina2 Посмотреть сообщение
необходимо же после всех инклудов.
Кому необходимо? Чтобы работало:
Цитата Сообщение от alsav22 Посмотреть сообщение
Или, выше всех инклудов, прописать: #define _CRT_SECURE_NO_WARNINGS (для getch() не работает, нужно заменить на _getch()).
Добавлено через 46 секунд
Цитата Сообщение от marina2 Посмотреть сообщение
Подскажите лучше
Лучше делайте правильно, и не пишите, что не работает, если делаете по-своему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.10.2014, 09:29
Помогаю со студенческими работами здесь

Не удается открыть источник файл "stdafx.h"
Вообщем ситуация: написал код для Лабораторной работы на visual studio 2019 в ошибке пишет Не удается открыть источник файл...

не удается открыть источник файл "stdafx.h"
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; // функции ввода-вывода #include &lt;locale.h&gt; // функции локализации #include...

Ошибка: "Не удается открыть источник stdafx.h"
Вот код #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;Windows.h&gt;//для русского языка в консоли using namespace...

Не удается открыть файл включение: StdAfx.h: No such file or directory
заголовочный файл #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; class Complex // класс...

Не удается открыть файл включение: stdafx.h: No such file or directory
Здравствуйте, помогите пожайлуста с програмой для курсовой. Основная проблема - Не удается открыть файл включение: stdafx.h: No such file...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru