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、通過字元陣列直接把字串賦值。程式如下: 渿河 這是在定義時初始化 如果你的右邊花括號內的字元個數少於 陣列元素個數 那麼其餘的陣列元素將會初始化為0 0 的ascii碼的值就是0 如果你不指定陣列元素個數 編譯器會自動幫你計算出元素個數的 char c 10 這個是已經給定了陣列的大小,達不到陣列大小的長度的話會自動添零的 c語言中將字串... 八哥說科技 不是的,c語言中字元陣列既可以儲存字元,又可以儲存字串。字元陣列本意就是是指用來存放字元資料的陣列。字元陣列的元素是字元型別的。字元陣列用於存放字元或字串。c語言中字元陣列的一般形式為 char 陣列名 資料長度 例如 char a 10 a 0 0 a 1 1 a 2 2 a 3 3 ... 字串初始化,如果逐個賦值的話,系統不是會自動新增 0 嗎不是。圖一就是長度為4的陣列,圖二長度為5圖三會是新增 0,但是是會把後面所有的都設為 0因為圖一和圖四不以 0結尾,所以不能用strlen和strcmp,會越界 圖四也可以用char str 4 stop 這樣賦值。如果不手動加長度就會是5了...C語言字元陣列與字串問題,C語言中將字串賦值給字元陣列的問題
c語言中字元陣列只能存放字串,C語言中字元陣列只能存放字串?
C語言字串問題,C語言字元陣列與字串問題