
Сообщение от
monolit
На ней(картике) проблема в том, что массив pName в функции статический,
как раз
не статический, был бы статический таких проблем

Сообщение от
monolit
Т.е. при выходе из функции получаешь мусор (данные удаляются).
не было бы
статические переменные не удаляются при выходе из функции
можно сказать, что статические переменные это глобальные переменные которые видны из одной функции
так что при статике можно написать так ,без выделения памяти
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
| char *GetProcName(char *path0){
static char pName[255];
int j=0;
char path[255];
strcpy(path, path0);
for(int i = strlen(path)-1; path[i] != '\\' ; i--, j++)
pName[j] = path[i];
pName[j] ='\0';// добавляем в конец 0 чтобы получилась строка
return pName;
} |
|
но тут возможен другой косяк
C++ |
1
2
| char *str1=GetProcName("Мама мыла\\ раму");
char *str2=GetProcName("Мама мыла\\ кошку"); |
|
и str1 и str2 будет указывать на один и тот же буфер где будет написано "кошку"
Добавлено через 51 секунду

Сообщение от
uhx
Вообщем, в начало записывает, а когда вывожу - всякий хлам. Как убрать?
0 в конце строки добавь иначе у тебя строка без конца
смотри как у меня сделано