【发布时间】:2021-03-31 21:37:49
【问题描述】:
寻找一种更有效的方法来替换前导和尾随空格 (' ') 并在每个空格的前面附加一个 'X'。它似乎可以用于尾随空格,但我想知道是否有更好/更简单的方法来解决这个问题。
例子:
传入字符串:'12345 '
想要的结果'XXXXX12345'
删除了 5 个空格并将 5 个'X's 附加到前面。
例子:
传入字符串:' 12345'
想要的结果'XX12345'
去掉2个空格,在前面追加2个'X's。
void fixStr(char* str)
{
int i = 0;
int length = strlen(str);
char strCopy[10];
strcpy(strCpy, str);
for(i = 0; i < length; i++)
{
if(strCopy[i] == ' ')
{
strCopy[i] = '\0';
str[i] = '\0';
break;
}
}
for(i = 0; i < length - i + 2; i++)
{
str[i] = 'X';
str[i + 1] = '\0';
}
strcat(str, strCopy);
}
【问题讨论】:
-
Passed in string: '12345 ' Desired result 'xxxxx12345'- 这里的逻辑到底是什么??? -
顺便说一句,
s_length已使用但未在代码中的任何位置声明和初始化! -
请注意,
strCopy的大小应为char strCopy[length + 1],以确保安全。 -
您谈论 X 而您的示例使用 x 代替;我已将示例转换为使用大写字母,但您的问题确实应该是自洽的。注意这些细节是成功编程的先决条件。
-
Passed in string: '12345 ' Desired result 'XXXXX12345' 这里没有前导空格,只有尾随空格,为什么要在字符串中添加
XXXXX?跨度>
标签: c string removing-whitespace prepend null-terminated