用C语言写一个函数将最后一个字节和第一个字节对换位置
时间: 2024-11-04 22:10:44 浏览: 14
在C语言中,我们可以创建一个名为`swapFirstAndLastByte`的函数来实现这个功能。这个函数接受一个指向字符串的指针,并通过指针操作直接交换第一个字符(即字节)和最后一个字符。
```c
#include <string.h>
void swapFirstAndLastByte(char* str) {
// 检查输入是否为空或只包含一个字符
if (str == NULL || strlen(str) <= 1) {
return;
}
// 保存最后一个字节(从尾部开始)
char lastChar = *str + strlen(str) - 1;
// 将最后一个字节移到第一个位置
*str = lastChar;
// 将新最后一个字节移动到原来的位置
*(str + strlen(str) - 1) = *str;
}
```
使用此函数的方式如下:
```c
int main() {
char testStr[] = "Hello, World!";
swapFirstAndLastByte(testStr);
printf("Swapped string: %s\n", testStr); // 输出: "!dlroW ,olleH"
return 0;
}
```
相关问题
用c语言写一个解析函数,参数为4个字节的ulong型,参数的第一个字节为段号,后面三个字节为序号
以下是用 C 语言编写的解析函数,该函数接受一个 4 字节的 ulong 类型参数,其中第一个字节为段号,后面三个字节为序号:
```c
void parse_ulong(ulong num) {
// 获取段号
unsigned char segment = (unsigned char) (num >> 24);
// 获取序号
ulong index = num & 0x00FFFFFF;
// 输出结果
printf("段号为 %d,序号为 %lu", segment, index);
}
```
解析函数的核心是对参数进行位运算,使用位移和位与操作提取出段号和序号。首先,将参数右移 24 位,即舍弃低 24 位,得到高 8 位,即第一个字节,该字节即为段号。然后,使用位与运算符 `&` 和一个掩码 `0x00FFFFFF` 来获取序号,该掩码只保留了低 24 位,并将高 8 位清零。最后,输出结果即可。
用C语言写一个字节内“1”bit统计函数
你可以使用以下代码来写一个在字节内统计"1"位的函数:
```
int count_ones_in_byte(unsigned char byte) {
int count = 0;
while (byte) {
count += byte & 1;
byte >>= 1;
}
return count;
}
```
这个函数会把输入的字节当作二进制数,然后逐个检查它的每一位是不是"1",如果是就增加计数器。最后,函数会返回计数器的值,即在字节内"1"的位数。
阅读全文