有一个字符数组的内容为:”student a am i”,请你将数组的内容改为”i am a student”.
要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
程序代码如下:
#include <stdio.h>
void change(char *p, char *q)
{
while (p < q)
{
char tmp = *p;
*p = *q;
*q = tmp;
*p++;
*q--;
}
}
int length(char *s)
{
int i = 0;
while (s[i] != '\0')
i++;
return i;
}
int main()
{
char arr[] = "student a am i";
printf("arr = [%s]\n", arr);
change(arr, arr + length(arr) - 1);
int i = 0;
char *b = arr;
char *d = arr;
int status = 0;
for (i = 0; arr[i] != '\0'; i++)
{
if ((status == 0) && (arr[i] != ' '))
{
b = arr + i;
status = 1;
}
else if ((status == 1) && (arr[i] == ' '))
{
d = arr + i - 1;
status = 0;
change(b, d);
}
}
change(b, arr + i - 1);
printf("arr = [%s]\n", arr);
return 0;
}
程序运行结果如下:

本文介绍了一种不使用库函数实现字符串反转的方法。通过自定义函数改变字符数组内容,演示了如何将”studentaami“变为”iamastudent“。程序利用有限空间完成任务,避免额外内存分配。
1593

被折叠的 条评论
为什么被折叠?



