如何修改char数组

时间:2011-03-02 04:01:10

标签: visual-c++

我正在阅读包含newpath的char数组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 个答案:

答案 0 :(得分:1)

newCount2始终为0,我认为您还需要增加此计数器。如果不是我不确定你对这个陈述newPath2[newCount2]=0;

做了什么

我想你想要这个:

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

答案 1 :(得分:1)

不要在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++] = ' ';