我正在阅读包含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;
}
答案 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++] = ' ';