всем привет
char** split(char* chzStr, int nLength, const char* chzSpliters, int* nCnt) {
*nCnt = 0;
int nMaxArrLn = nLength/2;
char** Result = (char**)malloc(nMaxArrLn);
for (int i = 0; i < nMaxArrLn; i++) {
Result[i] = (char*)malloc(nLength);
Result[i] = "";
}
bool bInWord = false;
int nWordIdx = 0;
while(*chzStr){
if (IsCharSeparator(*chzStr, chzSpliters)) {
if (bInWord) {
bInWord = false;
if (*nCnt++ >= nMaxArrLn) {
break;
}
}
} else {
bInWord = true;
Result[*nCnt] = "test";
Result[*nCnt][nWordIdx++] = *chzStr; // вот тут валиться access violation
}
chzStr++;
}
return Result;
}
на строке Result[*nCnt][nWordIdx++] = *chzStr;
хотя если дебажить и вынести сроку в "Watch" MSVS 2008 то присвоение нормально происходит можно увиеть как строка изменяеться
внимание вопрос: какого фига так происходит
Примечание:
не записывает символ в строку
Примечание:
сори фигово поставил вопрос
есть функция которая должна разбивать строку на массив строк
вот код (почистил лишнее)
char** split(char* chzStr, int nLength, const char* chzSpliters, int* nCnt) {
*nCnt = 0;
int nMaxArrLn = nLength/2;
char** Result = (char**)malloc(nMaxArrLn);
for (int i = 0; i < nMaxArrLn; i++) {
Result[i] = (char*)malloc(nLength);
Result[i] = "";
}
int nWordIdx = 0;
while(*chzStr){
Result[*nCnt] = "test";
Result[*nCnt][nWordIdx++] = '1';// вот тут валиться access violation
chzStr++;
}
return Result;
}
Примечание:
вот код функции IsCharSeparator хотя я не знаю чем поможет
разве запоститьн а гавнокод.ру :)
bool IsCharSeparator(char cStr, const char* chzSpliters) {
while(*chzSpliters) {
if (cStr == *chzSpliters++) {
return true;
}
}
return false;
}
Примечание:
проблема с двумерноостю массива в просттую строку типа char[] запихивает нормально
но я только изучаю С++ поетому не могу понят в чем проблема
Примечание:
Keres нет я под дебагом смотрю там сразу на 0 падает
Примечание:
Keres спасибо исправлю и запомню
Примечание:
Keres спасибо большое
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.