请问C语言中的float变量值存入char数组,和从char数组中转成float的写法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问C语言中的float变量值存入char数组,和从char数组中转成float的写法?相关的知识,希望对你有一定的参考价值。

例如:
float a= 1254.42;
char b[4];
需要把a存入b数组(传输用)的语法?
还有把b数组的内容取回a中的写法?

如果只是为了传输方便,直接内存复制就行吧。

#include<stdio.h>
#include<math.h>
#include<string.h>


void main()

    float a= 1254.42f;
    char b[4];
    float c;

    memcpy(b, &a, sizeof(a));
    //传输过程
    //接收,再转换
    memcpy(&c, b, sizeof( b));

    printf("%f\\n", c);

参考技术A float类型存入char中,需要把每一位数字分开依次存入字符数组。而字符数组转为float,可通过ascll码。追问

每个float占用4字节,你的写法可能会超过4字节啊?数组还不定长。

C 语言一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )





一、判定指针合法性



判定指针合法性时 , 必须进行如下判断 , 判断的是 指针指向的地址 是否为 NULL , 即 是否为 0 地址 ;

int get_value(char *key_value, char *key, char *value, int *value_len)

    // 任何函数调用前 , 先判定函数形参正确性
    if(key_value == NULL || key == NULL || value == NULL || value_len == NULL)
    
        printf("key_value == NULL || key == NULL || value == NULL || value_len == NULL\\n");
        return -1;
    

不能判断 指针指向的内容是否为 0 , 下面的示例是错误的 :

// 错误示例
int get_value(char *key_value)

    // 错误的判定示例
    if(*key_value != '\\0')
    
        return -1;
    


C 语言中的 指针 , 内存 等原理必须知道 , 不知道原理 , 就不会调用指针 ;

Java 语言中都会调用 , 即使 不懂 其中的内存 , 引用 相关的内存 原理 ;





二、数组越界



定义数组变量后 , 为其赋值时 , 赋值的内容 超出了数组的大小 ;

错误示例 : "abc" 字符串需要 4 4 4 字节内存 , 后面第 4 4 4 个字节是 \\0 字符 ;

// 错误示例 
char str[3] = "abc";




三、不断修改指针变量值



凡是涉及到修改 指针 变量值时 , 不要直接修改 原来的 指针变量 指向 ;

推荐 创建新的 临时局部指针变量 , 接收该 指针 , 需要修改指针时 , 修改 该 临时局部指针变量 ;





四、函数中将栈内存数组返回



如果在函数中 , 需要 创建一块内存空间 , 返回给调用者 ;

这块在 函数中 创建的内存 , 不能是数组 , 必须使用 malloc 函数 , 在 堆内存 中创建一块内存空间 ;

在 函数内 创建的数组 存储在 栈内存中 , 栈内存的数据 , 在函数结束后 , 其被系统自动回收 , 该内存可能被写入其它数据 ;





五、函数间接赋值形参操作



在函数中 , 如果需要通过 函数的 形参指针变量 通过 间接赋值 返回相关结果 , 这个指针使用时要慎重 ;

建议 创建一个 临时局部指针变量 , 接收该 形参指针 , 需要修改 指针 时 , 修改 临时局部指针变量 ;





六、指针取值与自增操作



对于指针 * 和 ++ 同时操作时 , 如 :

*p++;

特别注意 , 后缀 ++ 操作优先级高 , 先执行 *p 操作 , 然后地址 ++ ;

上述语句执行后 , 指针指向的地址就改变了 ;

对于不确定的操作 , 建议使用 () 设置操作优先级 ;


将 指针 指向的地址 中存储的 值 自增 : 先取出值 , 然后自增 ;

(*p)++ ;

先将地址自增 , 然后再取值 :

*(p++)

以上是关于请问C语言中的float变量值存入char数组,和从char数组中转成float的写法?的主要内容,如果未能解决你的问题,请参考以下文章

C 语言一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )

C语言将double转化成char数组存储

c语言如何解析xml并将所有内容存入数组

C语言fgets()函数(以指定长度读取文件中的字符,并存入字符数组变量中)

各位大神,请问怎么才能在c语言中用float输入小数并计算后输出小数?

c语言怎么把一个字符数组分成多个数组?