Я из Питона и недавно изучал C++. Я изучал функцию C/C++ под названием memset
и следовал онлайн-примеру с веб-сайта https://www.geeksforgeeks.org/memset-in-cpp/, где я получил некоторые ошибки компиляции:
/**
* @author : Bhishan Poudel
* @file : a02_memset_geeks.cpp
* @created : Wednesday Jun 05, 2019 11:07:03 EDT
*
* Ref:
*/
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
int main(int argc, char *argv[]){
char str[] = "geeksforgeeks";
//memset(str, "t", sizeof(str));
memset(str, 't', sizeof(str));
cout << str << endl;
return 0;
}
Ошибка при использовании одинарных кавычек 't'
Это печатает дополнительные символы.
[email protected]'
Ошибка при использовании "t" с двойными кавычками
$ g++ -std=c++11 a02_memset_geeks.cpp
a02_memset_geeks.cpp:17:5: error: no matching function for call to 'memset'
memset(str, "t", sizeof(str));
^~~~~~
/usr/include/string.h:74:7: note: candidate function not viable: no known
conversion from 'const char [2]' to 'int' for 2nd argument
void *memset(void *, int, size_t);
^
1 error generated.
Как использовать memset в C++?
Дальнейшее обучение
Отличный учебник с недостатками memset
приведен здесь: https://web.archive.org/web/20170702122030/https: /augias.org/paercebal/tech_doc/doc.en/cp.memset_is_evil.html