用strlen()和指针十六进制转十进制C语言
时间: 2023-11-16 21:04:07 浏览: 29
可以用以下代码来实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
int len = strlen(str);
printf("Length of string is %d\n", len);
char *ptr = str;
printf("Address of string is %p\n", ptr);
int ptr_dec = (int)ptr;
printf("Address in decimal is %d\n", ptr_dec);
return 0;
}
```
这里首先用 `strlen()` 函数获取字符串的长度,然后用指针变量 `ptr` 指向字符串的首地址,使用 `%p` 格式符输出指针的十六进制表示,使用强制类型转换将指针转换为整型并输出其十进制表示。
相关问题
用strlen()函数和指针输入一个用字符串表示的十六进制数转换成十进制整数。C语言
以下是一个简单的代码示例:
```c
#include <stdio.h>
#include <string.h>
int hexToDec(char *hex) {
int len = strlen(hex);
int base = 1;
int dec = 0;
int i;
for (i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
dec += (hex[i] - 48) * base;
base *= 16;
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
dec += (hex[i] - 87) * base;
base *= 16;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
dec += (hex[i] - 55) * base;
base *= 16;
}
}
return dec;
}
int main() {
char hex[100];
printf("请输入一个十六进制数:");
scanf("%s", hex);
printf("转换后的十进制数为:%d\n", hexToDec(hex));
return 0;
}
```
这个程序使用`strlen()`函数获取输入的十六进制数的长度,然后使用一个循环从后往前遍历每个字符,将其转换成十进制数并累加到`dec`变量中,最后返回`dec`。
c语言写一个函数输入一个十六进制数输出相应的十进制数
要实现这个功能,我们可以写一个函数来完成。该函数的原型可以是:
```c
int hexToDec(char *hex);
```
其中,参数hex是一个指向字符串的指针,表示输入的十六进制数。
函数的具体实现如下:
```c
#include <stdio.h>
#include <string.h>
int hexToDec(char *hex)
{
int len = strlen(hex);
int base = 1; // 初始化基数为1
int dec = 0; // 初始化十进制数为0
for (int i = len - 1; i >= 0; i--)
{
if (hex[i] >= '0' && hex[i] <= '9') // 如果是0-9的数字字符
{
dec += (hex[i] - '0') * base;
}
else if (hex[i] >= 'A' && hex[i] <= 'F') // 如果是A-F的字符
{
dec += (hex[i] - 'A' + 10) * base;
}
base *= 16; // 更新基数
}
return dec;
}
```
接下来,我们可以调用这个函数来实现输入一个十六进制数,输出相应的十进制数的功能,如下所示:
```c
int main()
{
char hex[100];
printf("请输入一个十六进制数:");
scanf("%s", hex);
int dec = hexToDec(hex);
printf("相应的十进制数为:%d\n", dec);
return 0;
}
```
通过上述程序,我们就可以输入一个十六进制数,然后通过调用hexToDec函数来得到相应的十进制数,并输出出来。