void fileNameProcess(char * inputName){
int size =strlen(inputName);
bool change=false;
char * name=inputName;
for(int i =0; i<size; i++){
char temp=* (name+i);
if(temp<0x10||temp>0x5b){
change=true;
}else if(0x19<temp<0x21){
change=true;
}else if(0x3a<temp<0x41){
change=true;
}
if(change){
//*(name+i)='_';
memset(name+i, '_', 1);
change=false;
}
}
}
он ломается, когда я пытаюсь установить символ в строке (memeset), но я не понимаю, почему это не позволяет мне это делать? почему я могу разрешить доступ к его чтению, но не могу изменить его? может кто-нибудь объяснить это в аспекте памяти. Я думаю, это потому, что строка передается в функцию. но до тех пор, пока я знаю место памяти, я мог бы исправить это правильно?C Ошибка записи указателя
благодаря
char * filename= strdup("try1.mat");
writter.locate(filename);
в его местоположение присвоить имя файла класса memeber символ * FilePath
Если вы передаете константную строку в InputName, то вам 'будет пытаться изменить память только для чтения. Вы также должны были увидеть предупреждение компилятора, когда вы это сделали. Одна небольшая дополнительная точка: почему вы используете memset для изменения одного символа - почему бы не просто «name [i] =« _ »; –
Вы также можете передать недопустимый указатель. Это const char *, иначе как он был создан? – Mau
В вашем коде также не хватает прочего понимания. Почему вы делаете эти запутанные вещи в первую очередь? Нет необходимости в вашей «temp». Используйте только 'name [i]' всюду. И использование 'memset' для назначения символа в строке ... делает, как указывает Павел. –