『壹』 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了
希望能幫到你