while (*s1) { s1++; } *s1='-'; s1++; while (*s2) { *s1=*s2; s1++; s2++; } *s1++=0; return s1;
时间: 2024-04-23 18:22:08 浏览: 23
这段代码实现了将字符串s2拼接到字符串s1的末尾,并在拼接后的字符串末尾添加一个空字符'\0'。其中,在字符串s1的末尾添加了一个连接符'-',可能是为了区分s1和s2的边界。
存在问题的地方是返回值,返回的是指向字符串s1末尾的指针,而不是指向拼接后的字符串的指针,因此返回值是错误的。正确的写法应该是在拼接后的字符串的开头返回指针。同时,如果s1的长度不够容纳s2,会导致越界访问,可能会导致程序崩溃或者其他不可预知的行为。
相关问题
帮我解释一下这个代码int compare(s1, s2) char *s1, *s2; { while(*s1++ == *s2){ if(*s2++ == 0) return(0); } return (*--s1 - *s2); }
这段代码是实现字符串比较的函数,参数为两个字符串指针s1和s2。该函数通过逐个比较两个字符串的字符,如果字符相同则继续比较下一个字符,直到遇到不同的字符或者其中一个字符串结束为止。如果两个字符串完全相同,则返回0,否则返回它们第一个不同的字符的ASCII码差值。其中,--s1是为了回退到相同字符前一个字符。
void string_append(char *s1,char*s2) { while(*s1!='\0') { s1++; } while(*s2!='\0') {*s1=*s2; s1++; s2++; } *s1='\0'; return; }
这是一个函数,函数名为 string_append,接收两个参数:s1 和 s2,都是字符指针类型。函数的作用是将字符串 s2 添加到字符串 s1 的末尾。具体实现是在 s1 的末尾找到 \0,然后将 s2 依次添加到 s1 的末尾。最后需要在 s1 的末尾添加一个 \0 表示字符串结尾。函数的返回值为 void,即没有返回值。