C-在括号内添加空格
因此,我做了一些错误的这个程序,并希望有人帮助。我想在括号和里面的单词之间加上空格。例如,如果原始字符串是C-在括号内添加空格,c,arrays,string,C,Arrays,String,因此,我做了一些错误的这个程序,并希望有人帮助。我想在括号和里面的单词之间加上空格。例如,如果原始字符串是if(x=5),那么我想将其设置为if(x=5)。我知道一个简单的任务,下面是我的代码: char* addSpaces(char* line) { int i,j; char *result = line; for (i = 0, j = 0; i<strlen(line); i++,j++) { if (lin
if(x=5)
,那么我想将其设置为if(x=5)
。我知道一个简单的任务,下面是我的代码:
char* addSpaces(char* line) {
int i,j;
char *result = line;
for (i = 0, j = 0; i<strlen(line); i++,j++)
{
if (line[i] == '[') {
result[j] = line[i];
j++;
result[j] = ' ';
}
else if (line[i] == ']') {
result[j] = ' ';
j++;
result[j] = line[i];
}
else result[j] = line[i];
}
result[j] = 0;
return result;
}
char*addSpaces(char*line){
int i,j;
字符*结果=行;
对于(i=0,j=0;i如果输入和输出字符串指向同一个缓冲区,则您的算法无法工作(这是您设置的方式)。因为您正在用较长的字符串覆盖输入字符串(至少在您的示例中),您最终将覆盖空终止符。这将导致下一次循环条件调用strlen时出现未定义的行为,然后所有下注都将关闭
与其覆盖输入缓冲区,不如分配一个新的更大的缓冲区,进行复制,然后返回一个指向该新缓冲区的指针。输入缓冲区没有有效性,或者您只是假设输入缓冲区足够长,可以在添加空格后保存?就像Carl说的,最好在函数内部分配内存(您可能需要在字符串中运行一次,以计算需要分配多少)然后返回新分配的缓冲区,该缓冲区填充了新值