morfeyka 0 / 0 / 0 Регистрация: 18.06.2019 Сообщений: 4 |
||||||||||||
1 |
||||||||||||
18.06.2019, 10:33. Показов 10621. Ответов 2 Метки base64, visual studio 2017, кодирование, visual studio (Все метки)
Пытался написать для алгоритма кодирования/декодирования base64 модуль для получения текста из файла и записи результатов в файл, но столкнулся с ошибками. В главном модуле (строка 37) ошибка e0020(идентификатор «с» не определен) и (строка 36) ошибка c2660 (функция не принимает 1 значение). Уже часа 3 сижу над проблемой, пока решал первую добавилась вторая, буду рад помощи. Главный модуль
Заголовочный файл
Дополнительный модуль
0 |
6577 / 4562 / 1843 Регистрация: 07.05.2019 Сообщений: 13,726 |
|
18.06.2019, 12:06 |
2 |
Сообщение было отмечено morfeyka как решение Решение
В главном модуле (строка 37) ошибка e0020(идентификатор «с» не определен) У тебя одна из ‘с’ там русская Добавлено через 1 минуту
ошибка c2660 (функция не принимает 1 значение). base64_encode(str.c_str(), l);
1 |
0 / 0 / 0 Регистрация: 18.06.2019 Сообщений: 4 |
|
18.06.2019, 14:13 [ТС] |
3 |
Спасибо за помощь, с русской раскладкой рил была ошибка, а вторую преобразование не решает, а добавляется еще одна «выражение должно иметь тип класса»(e0153) Добавлено через 18 минут
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
18.06.2019, 14:13 |
Помогаю со студенческими работами здесь Полное кодирование файла в base64 кодирование отправляемых картинок в Base64 Base64-кодирование файла перед отправкой формы Кодирование Base64 проблема с бинарным чтением файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 3 |
Error E0020, error code description not found on google!
Why when i literally copy paste some code, there is always so many errors??? I checked semantics and everything is correct. I will link my source code and source i got it from… Btw c++ is backwards compatible right? Or it would compile using older ISO standard no? So i don’t think that’s it. And i am using VS community 19, so not having newest standard is not problem either.
Following is source code in my program:
|
|
This is source when i got source code from: https://www.youtube.com/watch?v=6-vlLvBnIR0
I tried to google: c++ error code E0020, with description from VS: identifier «while» is undefined. And google literally didn’t find any result. So whole search would be like: c++ error code E0020 «identifier «while» is undefined»
And nothing was found… Wait what??? How does something basic like that not even finds?
while, lower case, not While with an upper case w.
Too many youtube coding videos are garbage.
While I agree, the capital W is not the youtube channel’s fault. It’s lowercase in both the video and the pastebin link.
Compiler error message give line numbers to point to where the error is, so next time you run into something like this, look around the line number it tells you to spot typos.
Anywho, C++ is case-sensitive, so be aware of that.
Btw c++ is backwards compatible right?
With its previous standards? Not completely; there are some features deprecated or features that have become more strict as of C++11 and beyond. But as a beginner you shouldn’t need to worry much about that.
Last edited on
This isn’t standard c++ anyway. conio.h is a windows extension.
But you clearly DIDN’T copy-paste the code, or it wouldn’t have suffered an uppercase/lowercase malfunction.
Hmm i could swear i saw big W, i can’t explain it now as i look on the video. But i don’t think that’s it usually. Than probably it was incorrect code many times. I couldn’t paste code from video. I should say, i written it myself according to the video. But i double checked it, before post.
Yeah i know about line number, which shows where is the error, it usually doesn’t help me. I try to find error in a context of code, but i don’t find anything in 99% of cases. I know it is case sensitive. I really don’t know why i wrote large W in this case and i don’t think semantics are usually the problem.
And because it is not completely backwards compatible as Ganado say i guess. Or some extension…
Anyway, i really don’t know why even description doesn’t find any results on google. And usually: even if i try include context with it and error code…
It is so annoying, i am trying to create simple c++ program, which detects a keypress and googling keeps finding solutions, which using extensions, or deprecated functions. Should i create new post, or ask in this for help ? I am reading rules, but i don’t even know, if this forums is meant for posting questions: about how to make a program…
Last edited on
c++ is only somewhat portable and backwards compatible, even if you ignore all libraries outside the language (eg, cstdlib is ok but conio isnt). Really old code that may have depended on integers being 32 bit or 16 bit instead of 64, for example, could be unfixable to get working today — all it takes is one line that assumes the size of a type that has since changed and it can break badly.
These issues can be addressed now, with precisely named types (eg int64_t) but back when, those did not exist and the coder just did what made sense.
this is just a gap in the language. Keypress isnt easy to do in c++ without operating system extensions, because of how the I/O part is handled at both ends (both by the c++ compiler/language and by the OS/hardware). Its doable, but its not simple at all, and many a coder has found this to be an aggravation. Just use the extension for your compiler/os, and if its portable, code it for each and put a compiler flag around it to use the right one for the target.
For windows specifically, getch is an option but visual studio lets you pull in keypress as well, which is a little more powerful and smart. Either one is the way to go. If you can’t get getch working, … there should be a way to help you through that, post new errors after you fix the while etc.
Yes, ask here for help. There should be some examples of both getch and keypress in these forums as well, if you search old posts. When asking here, post your code, what you want to do, and what is wrong with your own code if any (error messages? bug info eg I put in x, I get y, and I wanted z)
Last edited on
Adapted macOS Catalina version
|
|
Topic archived. No new replies allowed.
morfeyka 0 / 0 / 0 Регистрация: 18.06.2019 Сообщений: 4 |
||||||||||||
1 |
||||||||||||
18.06.2019, 10:33. Показов 9670. Ответов 2 Метки base64, visual studio 2017, кодирование, visual studio (Все метки)
Пытался написать для алгоритма кодирования/декодирования base64 модуль для получения текста из файла и записи результатов в файл, но столкнулся с ошибками. В главном модуле (строка 37) ошибка e0020(идентификатор «с» не определен) и (строка 36) ошибка c2660 (функция не принимает 1 значение). Уже часа 3 сижу над проблемой, пока решал первую добавилась вторая, буду рад помощи. Главный модуль
Заголовочный файл
Дополнительный модуль
__________________ 0 |
6574 / 4559 / 1843 Регистрация: 07.05.2019 Сообщений: 13,726 |
|
18.06.2019, 12:06 |
2 |
Сообщение было отмечено morfeyka как решение Решение
В главном модуле (строка 37) ошибка e0020(идентификатор «с» не определен) У тебя одна из ‘с’ там русская Добавлено через 1 минуту
ошибка c2660 (функция не принимает 1 значение). base64_encode(str.c_str(), l); 1 |
0 / 0 / 0 Регистрация: 18.06.2019 Сообщений: 4 |
|
18.06.2019, 14:13 [ТС] |
3 |
Спасибо за помощь, с русской раскладкой рил была ошибка, а вторую преобразование не решает, а добавляется еще одна «выражение должно иметь тип класса»(e0153) Добавлено через 18 минут 0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
18.06.2019, 14:13 |
Помогаю со студенческими работами здесь Полное кодирование файла в base64 кодирование отправляемых картинок в Base64 Base64-кодирование файла перед отправкой формы Кодирование Base64 проблема с бинарным чтением файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 3 |
Error E0020, error code description not found on google!
Why when i literally copy paste some code, there is always so many errors??? I checked semantics and everything is correct. I will link my source code and source i got it from… Btw c++ is backwards compatible right? Or it would compile using older ISO standard no? So i don’t think that’s it. And i am using VS community 19, so not having newest standard is not problem either.
Following is source code in my program:
|
|
This is source when i got source code from: https://www.youtube.com/watch?v=6-vlLvBnIR0
I tried to google: c++ error code E0020, with description from VS: identifier «while» is undefined. And google literally didn’t find any result. So whole search would be like: c++ error code E0020 «identifier «while» is undefined»
And nothing was found… Wait what??? How does something basic like that not even finds?
while, lower case, not While with an upper case w.
Too many youtube coding videos are garbage.
While I agree, the capital W is not the youtube channel’s fault. It’s lowercase in both the video and the pastebin link.
Compiler error message give line numbers to point to where the error is, so next time you run into something like this, look around the line number it tells you to spot typos.
Anywho, C++ is case-sensitive, so be aware of that.
Btw c++ is backwards compatible right?
With its previous standards? Not completely; there are some features deprecated or features that have become more strict as of C++11 and beyond. But as a beginner you shouldn’t need to worry much about that.
Last edited on
This isn’t standard c++ anyway. conio.h is a windows extension.
But you clearly DIDN’T copy-paste the code, or it wouldn’t have suffered an uppercase/lowercase malfunction.
Hmm i could swear i saw big W, i can’t explain it now as i look on the video. But i don’t think that’s it usually. Than probably it was incorrect code many times. I couldn’t paste code from video. I should say, i written it myself according to the video. But i double checked it, before post.
Yeah i know about line number, which shows where is the error, it usually doesn’t help me. I try to find error in a context of code, but i don’t find anything in 99% of cases. I know it is case sensitive. I really don’t know why i wrote large W in this case and i don’t think semantics are usually the problem.
And because it is not completely backwards compatible as Ganado say i guess. Or some extension…
Anyway, i really don’t know why even description doesn’t find any results on google. And usually: even if i try include context with it and error code…
It is so annoying, i am trying to create simple c++ program, which detects a keypress and googling keeps finding solutions, which using extensions, or deprecated functions. Should i create new post, or ask in this for help ? I am reading rules, but i don’t even know, if this forums is meant for posting questions: about how to make a program…
Last edited on
c++ is only somewhat portable and backwards compatible, even if you ignore all libraries outside the language (eg, cstdlib is ok but conio isnt). Really old code that may have depended on integers being 32 bit or 16 bit instead of 64, for example, could be unfixable to get working today — all it takes is one line that assumes the size of a type that has since changed and it can break badly.
These issues can be addressed now, with precisely named types (eg int64_t) but back when, those did not exist and the coder just did what made sense.
this is just a gap in the language. Keypress isnt easy to do in c++ without operating system extensions, because of how the I/O part is handled at both ends (both by the c++ compiler/language and by the OS/hardware). Its doable, but its not simple at all, and many a coder has found this to be an aggravation. Just use the extension for your compiler/os, and if its portable, code it for each and put a compiler flag around it to use the right one for the target.
For windows specifically, getch is an option but visual studio lets you pull in keypress as well, which is a little more powerful and smart. Either one is the way to go. If you can’t get getch working, … there should be a way to help you through that, post new errors after you fix the while etc.
Yes, ask here for help. There should be some examples of both getch and keypress in these forums as well, if you search old posts. When asking here, post your code, what you want to do, and what is wrong with your own code if any (error messages? bug info eg I put in x, I get y, and I wanted z)
Last edited on
Adapted macOS Catalina version
|
|
Topic archived. No new replies allowed.
I realy don’t know what i need to do to fix this. Iam using Visual. Precompilied headers off, sdl check off. Task is «Find the vertices of the graph that are in the back distance from the vertex»
Main file:
#include "Header.h" int main() { int start, length, number; char file1[] = "data.txt"; char file2[] = "result.txt"; queue **graph = NULL; input(&number, &start, &length, &graph, file1); queue *buffer = new queue({ NULL, NULL }); search(&number, &start, &length, &graph, &buffer); output(&buffer, file2, start, length); system("PAUSE"); }
Header.h:
#include <stdio.h> #include <windows.h> #include "vertex.h" //ввод void input(int *number, int *start, int *lenght, queue ***graph, char file[]) { int v1, v2; char c; FILE* in = fopen(file, "r"); if (in) { fscanf(in, "%d %d %dn", number, start, lenght); //считывается количество вершин, начальная вершина, длина пути и определяется ориентированный ли граф *graph = new queue*[*number]; //область, куда будет записываться список смежности for (int i = 0; i < *number; i++) (*graph)[i] = new queue({ NULL, NULL }); for (int i = 0; i < *number; i++) //ввод списка смежности { fscanf(in, "%d", &v2); //считывание строки fscanf(in, "%c", &c); //проверка есть ли элементы while (c != 'n') { if (fscanf(in, "%d", &v1)) //считывание граничащих вершин { push((*graph)[v2], v1); push((*graph)[v1], v2); } fscanf(in, "%c", &c); //проверка есть ли еще элементы } } fclose(in); } } //вывод void output(queue **buffer, char text[], int start, int length) { FILE *out = fopen(text, "w"); if (!(*buffer)->begin) { fprintf(out, "От вершины %d нет вершин на пути длинной %d", start, length); return; } while ((*buffer)->begin) //выводятся все элементы очереди { int a; pop(*buffer, a); fprintf(out, "%d ", a); } fclose(out); } void step(int* numE, int* numO, bool** odd, queue ***graph, queue** qu) { while (*numE > 0) //Элементы будут добавляться пока не пройдут все { //элементы добавленные на прошлом шагу int n; pop(*qu, n); //Элемент из очереди vertex* d = (*graph)[n]->begin; //Обход граничащих с n элементов while (d != NULL) //Пока не пройдут все граничущие элементы { if (!(*odd)[d->value]) { push(*qu, d->value); //В очередь граничащего элемен-та (*odd)[d->value] = true; //ставим флажок добавленный элемент (*numO)++; } d = d->next; //Переход к следующему граничащему элементу } (*numE)--; } } //поиск вершин у связного графа void search(int *number, int *start, int *length, queue ***graph, queue **comp) { bool* even = new bool[*number]; //Массив для хранения вершин на четном ходу bool* odd = new bool[*number]; //Массив для хранения вершин на нечетном ходу bool flag = false; //Флажок на проверку изолированную вершину int numO = 1, numE = 0; //Количество добавленных элементов во время прошлого хода queue* qu = new queue({ NULL, NULL });// записываются новые элементы for (int i = 0; i < *number; i++) //Обнуление массивов { odd[i] = 0; even[i] = 0; } push(qu, *start); //Добавление стартового элемента odd[*start] = true; for (int j = 0; j < *length; j++) { if (j % 2) { if (!numE) break; step(&numE, &numO, &odd, graph, &qu); } else { if (!numO) break; step(&numO, &numE, &even, graph, &qu); if (!flag && numE) //если было добавление, то убираем флажок flag = true; } } if (*length % 2) { for (int i = 0; i < *number; i++) if (even[i]) push(*comp, i); } else if (flag || *length == 0) for (int i = 0; i < *number; i++) if (odd[i]) push(*comp, i); }
vertex.h:
struct vertex { int value; vertex *next; }; struct queue { vertex *begin; vertex *end; }; void input(int *number, int *start, int *lenght, queue ***graph, char file[]); void output(queue **buffer, char text[], int start, int length); void step(int* numE, int* numO, bool** odd, queue ***graph, queue** qu); void search(int *number, int *start, int *length, queue ***graph, queue **comp);
E0020 identifier «pop» is undefined
E0020 identifier «push» is undefined
C3861 ‘push’: identifier not found
C3861 ‘pop’: identifier not found
Я пытаюсь отправить два массива в функцию с помощью указателей.
Затем я пытаюсь присвоить разыменованные значения из двух *массивов (отправляемых в качестве аргументов при вызове функции) двум массивам (не указателям), где ими можно манипулировать с большей легкостью.
Примечание: нет объектов или классов. Я не вижу никакого рессона для динамической обработки памяти (создать, удалить).
Исходные массивы в main:
int arr_fractions[2][7]
{
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};
int arr_converted_values[2][7]
{
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};
Это вызов функции, в основном:
arr_converted_values[2][7] = decimal_conversion(arr_decimals, *arr_converted_values, &var_fract_length);
Функция:
int decimal_conversion(long double* arr_temp_decimals, int* arr_converted_values, int* var_fract_length)
{
// pointer retrieval ----------------------------------------------------------------
long double arr_temp_decimals[2][7]
{
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};
int arr_temp_values[2][7]
{
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};
int var_tempt_fract_value = *var_fract_length;
for (int* var_temp_storage = 0; *var_temp_storage < *var_fract_length; *var_temp_storage++)
{
arr_temp_decimals[0][*var_temp_storage] = &arr_decimals[0][*var_temp_storage];
arr_temp_decimals[1][*var_temp_storage] = &arr_decimals[1][*var_temp_storage];
arr_temp_values[0][*var_temp_storage] = arr_converted_values[0][var_temp_storage];
arr_temp_values[1][*var_temp_storage] = arr_converted_values[1][var_temp_storage];
}
// --------------------------------------------------------------------------------------------
...
...
...
return (*arr_converted_values);
}
Три ошибки (ниже), которые я получаю, указывают на использование массива в цикле for, показанном выше.
E0142: выражение должно иметь тип указателя на объект, но имеет тип —>arr_*temp_*decinmals[0[*var_temp_storage]
E0142: выражение должно иметь тип указателя на объект, но имеет тип —>arr_*temp_*decinmals[1]*var_temp_storage]
E0020: идентификатор «arr_decimals» не определен — > &arr_decinmals[0][*var_temp_storage];
2 ответа
Проблема в том, что вы пытаетесь присвоить значение массиву, что невозможно. Массивы не могут быть назначены в C++
Возможно, вы захотите присвоить значение элементу массива, например:
arr_temp_decimals[0][*var_temp_storage] = arr_decimals[0][*var_temp_storage];
Однако и это не сработает, потому что вы пытаетесь присвоить значение типа long double элементу типа int. Сначала вам нужно будет преобразовать значение, например:
arr_temp_decimals[0][*var_temp_storage] = static_cast<int>(arr_decimals[0][*var_temp_storage]);
В качестве альтернативы вы можете изменить тип массива arr_temp_decimals на тип long double, например:
long double arr_temp_decimals[2][7]
{
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};
0
Igor
17 Ноя 2022 в 06:38
В вашем фрагменте много ошибок.
arr_temp_decimals
имеет переопределение in int decimal_conversion()
идентификатор «arr_decimals» не определен
Вы не объявляли arr_decimals раньше в функции.
Arr_decimals помещается в decimal_conversion(arr_decimals…). Так что это будет
arr_decimals[0][*var_temp_storage] = arr_decimals[0][*var_temp_storage];
Arr_converted_values — статический двумерный массив. Попробуйте изменить параметр функции int* arr_converted_values
на int arr_converted_values[][7]
.
for (int* var_temp_storage = 0; *var_temp_storage < *var_fract_length; *var_temp_storage++)
arr_converted_values[0][var_temp_storage];
Адрес указателя нельзя использовать как arr_converted_values[0][var_temp_storage]
.
Рассмотрите возможность использования std::vector .
0
Minxin Yu — MSFT
18 Ноя 2022 в 12:04
- Remove From My Forums
-
Вопрос
-
Только начал обучение С++ по учебнику Страуструпа.
Загрузил Visual StudioНачал со стандартного «Hello, World!»
Отладка проходит успешно, ошибок нет.
Однако программа не запускается.
Выходят следующие сообщения:
Следующий проект устарел: Hello, World — Debug Win32
Не удается запустить программу: …/HelloWorld.exe
Не удается найти указанный файлЧто я делаю не так?
Система: Wind x64.
Ответы
-
Книга нашего дорогого и горячо любимого Страуструпа написана о языке программирования, а не о работе в среде разработки Visual Studio. Последнее описано в справочной системе (в крайнем случае, есть сайт msdn.microsoft.com/library).
Советую там ознакомиться с технологией создания проекта VC++ и процедурой преобразования исходного кода в исполняемый модуль.- Изменено
20 ноября 2013 г. 5:37
- Помечено в качестве ответа
Maksim MarinovMicrosoft contingent staff, Moderator
2 декабря 2013 г. 7:42
- Изменено
The solution is
Gets replaced with gets_s
Gets function has a buffer overflow vulnerability, and the program using the GETS function has the risk of buffer overflow
If you read the STR is a carefully constructed string, it will cause a buffer overflow and cause the program process to change.
gets () function
1. Description
The C library function Char *Gets (Char *STR) enters Stdin from the standard and stores it in the string pointed by the STR. When you read the royal symbol or reach the end of the file, it stops, depending on the situation.
GETS (STR) is equal to scanf («%s», & str) to write the read string to the array, but it is different.
2. Different
Scanf («%S», & Str): Stop it when you read the space.
gets (STR): Read until you knock on the car (whether there is a space in the middle).
(Difference 2)
By the way, the difference between printf () and puts ()
Puts () will automatically convert the ‘ 0’ to ‘ n’ when the output string is output, that is, the PUTS method will be automatically changed after the string is output.
#include <stdio.h>
int main(void) {
char str[20];
char str2[20];
gets(str);
scanf("%s", str2);
puts(str);//==printf("%sn", &str);
printf("%s", str2);
}
- Remove From My Forums
-
Question
-
Whenever i use #Include «wincodec.h» i get alot of errors. These errors consist of:
Severity Code Description Project File Line Suppression State Error C2061 syntax error: identifier 'DXGI_JPEG_QUANTIZATION_TABLE' Project20 c:program files (x86)windows kits10include10.0.17763.0umwincodec.h 8170 Severity Code Description Project File Line Suppression State Error C2061 syntax error: identifier 'DXGI_JPEG_QUANTIZATION_TABLE' Project20 c:program files (x86)windows kits10include10.0.17763.0umwincodec.h 8359 Severity Code Description Project File Line Suppression State Error C2061 syntax error: identifier 'DXGI_JPEG_DC_HUFFMAN_TABLE' Project20 c:program files (x86)windows kits10include10.0.17763.0umwincodec.h 8165 Severity Code Description Project File Line Suppression State Error C2061 syntax error: identifier 'DXGI_JPEG_DC_HUFFMAN_TABLE' Project20 c:program files (x86)windows kits10include10.0.17763.0umwincodec.h 8354 Severity Code Description Project File Line Suppression State Error C2061 syntax error: identifier 'DXGI_JPEG_AC_HUFFMAN_TABLE' Project20 c:program files (x86)windows kits10include10.0.17763.0umwincodec.h 8160 Severity Code Description Project File Line Suppression State Error C2061 syntax error: identifier 'DXGI_JPEG_AC_HUFFMAN_TABLE' Project20 c:program files (x86)windows kits10include10.0.17763.0umwincodec.h 8349 Severity Code Description Project File Line Suppression State Error (active) E0020 identifier "DXGI_JPEG_QUANTIZATION_TABLE" is undefined Project20 c:Program Files (x86)Windows Kits10Include10.0.17763.0umwincodec.h 8170 Severity Code Description Project File Line Suppression State Error (active) E0020 identifier "DXGI_JPEG_QUANTIZATION_TABLE" is undefined Project20 c:Program Files (x86)Windows Kits10Include10.0.17763.0umwincodec.h 8359 Severity Code Description Project File Line Suppression State Error (active) E0020 identifier "DXGI_JPEG_DC_HUFFMAN_TABLE" is undefined Project20 c:Program Files (x86)Windows Kits10Include10.0.17763.0umwincodec.h 8165 Severity Code Description Project File Line Suppression State Error (active) E0020 identifier "DXGI_JPEG_DC_HUFFMAN_TABLE" is undefined Project20 c:Program Files (x86)Windows Kits10Include10.0.17763.0umwincodec.h 8354 Severity Code Description Project File Line Suppression State Error (active) E0020 identifier "DXGI_JPEG_AC_HUFFMAN_TABLE" is undefined Project20 c:Program Files (x86)Windows Kits10Include10.0.17763.0umwincodec.h 8160 Severity Code Description Project File Line Suppression State Error (active) E0020 identifier "DXGI_JPEG_AC_HUFFMAN_TABLE" is undefined Project20 c:Program Files (x86)Windows Kits10Include10.0.17763.0umwincodec.h 8349