怎樣在c語言中修改字串的字元的值

時間 2021-10-30 06:44:56

1樓:寫

字串本來是常量,應當使用指向常量的指標:

const char* p = "good morning!";

所以說之前的語句語法是不正確的。

如果要修改,可以使用記憶體分配或字元陣列:

char* p = malloc(32) //需要包含strcpy(p, "good morning!"); //需要包含//--------分隔線--------char p[32] = "good marning!";

這樣就可以修改字串的內容了。

2樓:

獨孤九劍碧血劍回答正確。注意char *a="abcdef"與char a="abcdef"的區別:1、字串存放的記憶體區域不同:

前者存放在常量區,不可修改,後則存放在棧中,可以修改;2、變數a存放的內容不同:前者存放的是一個地址,而後者存放的是字串"abcdef",因此使用sizeof它們的結果是不同的,分別是4和7;

3樓:水主沉浮

你那樣定義出來的字串a是個常量字串,是無法修改其中的字元的。

你需要定義成普通的字串,比如

char a = ;

然後再修改其中的某個字元的值。

4樓:星月小木木

根據字串儲存的變數的不同,方法不同,參考**:

儲存在char陣列中(支援c/c++)

char str="hello" ;

int i;

for( i=0;str[i];i++ )printf("%c\n", str[i] ); //以陣列方式引用一個字元:str[i]

for( i=0;*(str+i);i++ )printf("%c\n", *(str+i) ); //以指標方式引用一個字元:*(str+i)

儲存在string中(僅支援c++)

string str="abcde";

for(string::iterator iter = s.begin(); iter!=s.end(); iter++) //使用迭代器

cout<

for( int i=0;i

5樓:匿名使用者

通不過的原因是指標a指向的是一個靜態字串「abcdefg」,而靜態變數的值是不允許修改的。

改一下定義就可以了,

char *a=['a','b','c','d','e','f','g'];

6樓:獨孤九劍碧血劍

#include"stdio.h"

int main()

這樣就可以了

c語言中,如何在一個字串中修改當中的個別值。

7樓:蔥頭格拉漢姆

void changechar(const char* target,char a,char b)//最好不要用int

//overload

void changechar(const char arr,const char tar,char a,char b)//引數:串,需替換值,a,b

//只換第一個

std::cout<<"no value: "<

8樓:

在這裡,count是int型。

int a[4]="abcd";

abcd在int 型陣列中以ascii碼儲存。

陣列中的值可以直接作為左值改變

陣列是從0開始計數的,所以c對應的為

a[2]=count;

可能你弄錯了

char a[4]更合適,這是專門用來儲存字元的

怎麼進行字串賦值?c語言

9樓:鄉村打柴人

一、題目大意為輸出一個已知的字串。

解題思路:

定義一個字元陣列,並用「初始化列表」對其賦以初值用迴圈逐個輸出此字元陣列中的字元

#include

int main()

;int i;

for(i=0;i<15;i++)

printf("a=%c",c[i]);

printf("\n");

return 0;

10樓:寫在楓葉上的故事

字串賦值的方法:

1、定義的時候直接用字串賦值

如:char a[10]="hello";

注意:不能先定義再給它賦值,如char a[10]; a[10]="hello";這樣是錯誤的。

例如:main()

2、對陣列中字元逐個賦值

字串可以賦值給字元指標變數,或者將字串用字元陣列儲存。

如:char a[10]=;

3、利用strcpy

strcpy是一種c語言的標準庫函式,strcpy把含有'\0'結束符的字串複製到另一個地址空間,返回值的型別為char*。

如:char a[10];

strcpy(a, "hello");

擴充套件資料

字串賦值的注意事項:

1、在使用指標的時候,指標可以自增,而陣列名不能自增編譯器給陣列分配了空間。

3、在void指標使用的時候,不能使用指標運算,因為void型編譯器不能識別型別的長度(即指標所指物件的體積),p++這樣就是不合法的,即不能進行數**算,也不能使用*取值操作,想使用必須轉換為其它的型別。

11樓:加百列

在c語言中,字串的賦值主要有兩種方法,第一種是通過指標的方式直接賦值,第二種是通過陣列直接賦值。

1、指標式賦值。

通過程式的運**況,可以知道:char *p = "hello";這種字串的賦值方式是完全沒有問題的。要理解這種賦值方式,首先得理解雙引號(特別注意:

這個是雙引號,不要賦值的時候給弄了個單引號)在這個語句中做了什麼工作。雙引號主要做了3個工作,分別是:

(1)申請了空間(在常量區),存放了字串。

(2)在字串尾加上了「\0」。

(3)返回地址。

這裡所返回的地址就賦值給了char *型別的指標變數p。

2、通過字元陣列直接把字串賦值。程式如下:

12樓:薄瓔脫雅嫻

首先要弄清楚

什麼是字串指標,還有什麼叫字元陣列。

字串指標只是一個指標,就像你上面的a

裡面的s

沒有初始化,那麼你呼叫讀串

函式資料要寫到**呢?

不知道吧

,因為s

不知道指向**。

char

*s;s="abcdef";

這又是什麼意思呢?

這個操作

是將一個

串("abcdef"

在記憶體中已經存在了),只是將這個串的首地址賦給s,也就是讓s指向

這個串。你可以把這個串理解成

在編譯時期就已經確定好了的資料。我們可以用它。但不能更改他的值。

什麼叫字元陣列呢?

首先要弄清楚

什麼叫陣列

,如int

array[4]=;

這是什麼意思呢?

就是四個連續的整數

吧。同樣

字元陣列也

是連續的

n個字元吧

如char

arr[3]=;

這是一個陣列

,有三個元素,分別是ab

c,看起來「好像」字串呀,為什麼是

「好像」,因為它與字串

有著本質的區別。字串是n

個連續的字元

+『\0』

組成,我們上面的

例子只有

n個連續的字元,沒有

『\0』

吧。所以它不是字串。

為了使用方便

呢,編譯器允許我們

使用如下方式初始化一個字串。

1:char

*s="abcdef";

2:char

ss[10]="abcd";

3:char

sss[10]=;

上面三種方式

都是正確的,但是

有區別。

1:上面已經講了,是將已經存在於記憶體中的字串的首地址賦值給s

2:這是將已經存在於記憶體中的字串

拷貝到ss

這個陣列裡面,是一個拷貝

過程,產生的影響是系統中存在兩個

相同的字串。

3:同2

13樓:庠序教孝悌義

如果要對質富川進行賦值的話。首先你要擁有一個字串變數比如說str如果要對質富川進行賦值的話,首先你要擁有一個字串變數,比如說string a

然後你就可以說a等於多少多少加個引號就行了

14樓:仉巨集掌翠絲

char

string[500]="abcdefg";

這個就是說你在給一個陣列賦值

但是如果你定義完陣列以後又這樣

string[500]="abcdefg";

就是說你在給陣列裡的第500個元素賦值

首先陣列下標最大是499

沒有500

其次只能存放一個字元你確放了一個字串

當然不對了

15樓:風若遠去何人留

在c語言中,字串是以字元陣列形式儲存的,並約定以\0作為結束符。所以字串賦值不能直接用=賦值,而是要用專門的函式進行復制,在c語言中,這個函式為strcpy。

1 函式名 :

strcpy

2 形式:

char * strcpy(char *dst, const char *src);

3 標頭檔案:

string.h

4 功能:

將src中的字串複製到dst中,並返回dst的首地址。

5 示例:

char buf[100], buf1[100];

strcpy(buf, "test");// 將字串test賦值到buf。

strcpy(buf1, buf); //將字串buf的值,賦值給buf1.

16樓:卑和田麗文

需要準備的材料分別有:電腦、c語言編譯器。

1、首先,開啟c語言編譯器,新建一個初始.cpp檔案,例如:test.cpp。

2、在test.cpp檔案中,輸入c語言**:chara[20];strcpy(a,

"hello");printf("%s",a);。

3、編譯器執行test.cpp檔案,此時成功將字串賦值給了字串a並列印。

17樓:

string賦值,需要加個#include然後用strcpy

strcpy(a,"right");來完成,試看吧會有return, return a得值所以也可以寫成printf("%s\n",strcpy(a,"right"));

因為string 或者 char array 不能直接賜值,所以要用裡的工具來完成。

18樓:

char a="right";

printf("%s",a);

就可以了,單個char型變數只能存一個字元,所以字串要用一個字元陣列來存。

19樓:匿名使用者

c語言沒有字串變數,要用字元陣列來實現

如下char a="right";

20樓:南北

字串的賦值主要有兩種方法,第一種是通過指標的方式直接賦值,第二種是通過陣列直接賦值。

1、指標式賦值。

通過程式的運**況,可以知道:char *p = "hello";這種字串的賦值方式是完全沒有問題的。要理解這種賦值方式,首先得理解雙引號(特別注意:

這個是雙引號,不要賦值的時候給弄了個單引號)在這個語句中做了什麼工作。雙引號主要做了3個工作,分別是:

(1)申請了空間(在常量區),存放了字串。

(2)在字串尾加上了「\0」。

(3)返回地址。

這裡所返回的地址就賦值給了char *型別的指標變數p。

2、通過字元陣列直接把字串賦值。程式如下:

C語言字元陣列與字串問題,C語言中將字串賦值給字元陣列的問題

渿河 這是在定義時初始化 如果你的右邊花括號內的字元個數少於 陣列元素個數 那麼其餘的陣列元素將會初始化為0 0 的ascii碼的值就是0 如果你不指定陣列元素個數 編譯器會自動幫你計算出元素個數的 char c 10 這個是已經給定了陣列的大小,達不到陣列大小的長度的話會自動添零的 c語言中將字串...

c語言中字元陣列只能存放字串,C語言中字元陣列只能存放字串?

八哥說科技 不是的,c語言中字元陣列既可以儲存字元,又可以儲存字串。字元陣列本意就是是指用來存放字元資料的陣列。字元陣列的元素是字元型別的。字元陣列用於存放字元或字串。c語言中字元陣列的一般形式為 char 陣列名 資料長度 例如 char a 10 a 0 0 a 1 1 a 2 2 a 3 3 ...

C語言字串問題,C語言字元陣列與字串問題

字串初始化,如果逐個賦值的話,系統不是會自動新增 0 嗎不是。圖一就是長度為4的陣列,圖二長度為5圖三會是新增 0,但是是會把後面所有的都設為 0因為圖一和圖四不以 0結尾,所以不能用strlen和strcmp,會越界 圖四也可以用char str 4 stop 這樣賦值。如果不手動加長度就會是5了...