Как изменить массив символов - PullRequest
0 голосов
/ 02 марта 2011

Я читаю массив символов newpath, который содержит C:\\Program Files\\test software\\app. Как заменить пробел символом подчеркивания?

char newPath2[MAX_PATH];
int newCount2 = 0;

for(int i=0; i < strlen(newPath); i++)
 {
 if(newPath[i] == ' ')
    {
     newPath2[i] = '_';         
    }
    newPath2[newCount2]=0;
 }

Ответы [ 2 ]

1 голос
/ 02 марта 2011

Не используйте strlen в for, используется O (n) время - циклически просматривает всю строку при каждом вызове - так что ваш for будет работать очень медленно, так как он вызывается на каждом шаге вfor.

Лучше:

char newPath2[MAX_PATH];
int newCount2 = 0;
const int length = strlen(newPath);

for(int i=0; i < length; i++)
 {
   if(newPath[i] == ' ')
    {
     newPath2[newCount2++] = '_';         
    } else {
     newPath2[newCount2++] = newPath[i];
    }
 }

Таким образом, если вам нужно заменить пробел, скажем, двумя символами (например, \<space>), вы можете легко заменить newPath2[newCount2++] = '_'с: newPath2[newCount2++] = '\\'; newPath2[newCount2++] = ' ';

1 голос
/ 02 марта 2011

newCount2 всегда 0, я думаю, вам нужно увеличить этот счетчик тоже.Если нет, я не уверен, что вы делаете с этим утверждением newPath2[newCount2]=0;

Я думаю, вы хотите это:

for(int i=0; i < strlen(newPath); i++)
 {
 if(newPath[i] == ' ')
    {
     newPath2[i] = '_';         
    }else{
     newPath2[i]=newPath[i];
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...