📅  最后修改于: 2023-12-03 15:30:15.376000             🧑  作者: Mango
本测验中的问题2是一道C语言面试题。该题目要求实现一个左旋字符串的函数,即将字符串的前n个字符移到最后面。具体的要求如下:
void rotateString(char *str, int n);
char *str
表示要旋转的字符串;int n
表示要旋转的字符个数。"abcdef"
,如果n=2,则旋转后的字符串为"cdefab"
。下面是该函数的一种实现:
void rotateString(char *str, int n) {
int len = strlen(str);
if (n > len) {
printf("Error: the length of the string is less than %d.\n", n);
return;
}
char *temp = (char *) malloc(n * sizeof(char));
strncpy(temp, str, n);
memmove(str, str + n, len - n);
strncpy(str + len - n, temp, n);
free(temp);
}
该函数首先将函数的长度与n进行比较,如果n大于了字符串长度,则返回错误信息。接着,用malloc函数动态分配一个n字节大小的数组temp,将字符串的前n个字符复制到temp中。接着,使用memmove函数将字符串中的前len-n个长度移到字符串的最后面。最后,使用strncpy函数将temp中的n个字符复制到字符串的末尾。最后,释放掉数组temp的空间。
总体来说,这是一道相对简单的题目,非常适合于C语言初学者进行练习和巩固。