‘壹’ c语言,要使char中某一位数据改变,比如a[8]={01234},我想使第三位变为\0,怎么变啊
a[2] = '\0';
‘贰’ 怎样在C语言中修改字符串的一个字符的值
字符串本来是常量,应当使用指向常量的指针:
const char* p = "Good morning!";
所以说之前的语句语法是不正确的。
如果要修改,可以使用内存分配或字符数组:
char* p = malloc(32) //需要包含<stdlib.h>
strcpy(p, "Good morning!"); //需要包含<string.h>
//--------分隔线--------
char p[32] = "Good marning!";
这样就可以修改字符串的内容了。
‘叁’ C语言更改字符串中的某一位
应该是table[0]=‘2‘
第一个数组为0,字符用单引号,字符串用双引号。
‘肆’ 在单片机C语言中如何对变量的某一位进行操作或赋值。
在C语言中,一般有两种方法来操作位,一种是使用C语言提供的位运算操作符,一种是使用位域。
1、使用位域
在C语言中定义位域的一般格式如下:
struct位域结构名
{位域列表};
struct:在C语言中定义位域所使用的关键字是struct。
位域结构名:是一个C语言中的标识符,有字母、数字、下划线组成,而且第一个字符必须是字母或者下划线。
位域列表:组其中位域列表的形式为: 类型说明符 位域名:位域长度
下面的示例代码,通过位域来计算IEEE754浮点数编码中单精度数的最大值 、最小值和最小弱规范数。
#include<stdio.h>
typedefstructFP_SINGLE
{
unsigned__int32fraction:23;
unsigned__int32exp:8;
unsigned__int32sign:1;
}fp_single;
intmain()
{
floatx;
fp_single*fp_s=(fp_single*)&x;
fp_s->sign=0;
fp_s->exp=0xfe;
fp_s->fraction=0x7fffff;
printf("float最大数:%le ",(double)x);
fp_s->sign=0;
fp_s->exp=0x1;
fp_s->fraction=0x0;
printf("float最小数:%le ",(double)x);
fp_s->sign=0;
fp_s->exp=0;
fp_s->fraction=0x1;
printf("float最小弱规范数:%le ",(double)x);
return0;
}
2、使用位运算符
C语言中的位运算符有一个基本的常识,即只能操作整数,不能操作浮点数,因为浮点数是使用IEEE754编码的,使用位操作数没有任何意义。
C语言提供的位运算符列表:
&按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
|按位或两个相应的二进制位中只要有一个为1,该位的结果值为1
^按位异或若参加运算的两个二进制位值相同则为0,否则为1
~取反~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0
<<左移用来将一个数的各二进制位全部左移N位,右补0
>>右移将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
‘伍’ C语言中如何对一个字节中的某个或者某几个位进行操作,而不影响其他的位
使用位运算符就可以了,举个例子,比如char buf;要将buf的最后一位置1,可以使用
buf |= 0x01;
如果要将最后一位清零,那就使用buf &=~0x01;
‘陆’ C语言 更改字符串中的某个字符
c中的字符串就是一个字符数组。
如:
char
s[10]="wo
shi
sb";
char
c;
取最左边的字符,就是c=s[0];
‘柒’ C语言问题 替换指定的位
#include"stdio.h"
int bitcalculate (void)
{
int bit,number=0;
bit=~0;
while (bit){
++number;
bit>>=1; //在这进入死循环,是不是改为bit<<=1;
}
return number;
}
unsigned int bitpat_set (unsigned int *p,unsigned int value2,int start,int end)
{
int bitcalculate (void);
unsigned int value1=*p;
int bits;
bits=bitcalculate();
value1<<=start;
value1>>=(bits-(end-start));
value1=value1|value2;
return value1;
}
int main (void)
{
unsigned int bitpat_set (unsigned int *p,unsigned int value2,int start,int end);
unsigned int x=0150u,n=077u;
printf("this is %u",bitpat_set (&x,n,2,4));
return 0;
}
‘捌’ C语言位运算,怎样修改每一位的值呢
这个就要用到位运算了
比如lz说的,就应该是ch^(1<<2)
用二进制表示的话,就是
0000 0000 0000 0001 <<2
0000 0000 0000 0100
然后
0000 0000
^ 0000 0100
----------------
0000 0100
‘玖’ c语言 单片机 将数据的某一个位替换成指定的值
P2 |= 0x02;就是对一个字节的第二位进行置位
‘拾’ c语言找到一个十六进制数的某一位并替换
十六进制替换,可以先 “与” 运算,然后“加”运算 完成。
//和0xFFFFFFFF与运算替换其中的第2个数,就把第二个F换成0
a=0x1234abdf & 0xF0FFFFFF // 此时a=0x1034abdf
a=a+0x04000000//此时 a=0x1434abdf 2就变成4了
希望能帮到你