C语言 —— 把字符指针中的字符串,存入字符数组中
生活随笔
收集整理的這篇文章主要介紹了
C语言 —— 把字符指针中的字符串,存入字符数组中
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題描述:有一個用字符指針表示的字符串char *str = "0 12";? 有一個數組 char buf[128] = {0}; 現在需要將字符指針表示的字符串"0 12",放入到數組buf中。
一、首先了解一下字符串的表示方式,即c語言中怎樣定義字符串
可以用數組來初始化:
例如:char buf[5] = {'a','b','c'}; 或者 char buf[5] = {"abc"}; 或者 buf[5] = "abc";
可以用指針來初始化:
例如:char *pcStr = "abc";
測試代碼如下:?
#include <stdio.h>int main() {char buf[5] = {'a','b','c'};//char buf_1[5] = {"a","b","c"}; //錯誤:字符數組初始值設定項中有多余元素char buf_2[5] = {"abc"};char buf_3[5] = "abc";char *pcStr = "abc";int i = 0;for(i = 0; i < 5; i ++){ /*結果顯示:buf[0]=97 buf[1]=98 buf[2]=99 buf[3]=0 buf[4]=0*/printf("buf[%d]=%d ", i, buf[i]); }printf("\n");/*for(i = 0; i < 5; i ++){ //結果顯示:string.c:6:2: 錯誤:字符數組初始值設定項中有多余元素printf("buf_1[%d]=%d ", i, buf_1[i]);}printf("\n");*/for(i = 0; i < 5; i ++){ /*結果顯示:buf_2[0]=97 buf_2[1]=98 buf_2[2]=99 buf_2[3]=0 buf_2[4]=0*/printf("buf_2[%d]=%d ", i, buf_2[i]);}printf("\n");for(i = 0; i < 5; i ++){ /*結果顯示:buf_3[0]=97 buf_3[1]=98 buf_3[2]=99 buf_3[3]=0 buf_3[4]=0*/printf("buf_3[%d]=%d ", i, buf_3[i]);}printf("\n");while('\0' != *pcStr) //注意這里的判斷條件{ /*結果顯示:*pcStr=97 *pcStr=98 *pcStr=99*/printf("*pcStr=%d ", *pcStr);pcStr++;}printf("\n");return 0; }?二、把指針表示的字符串內容,放入數組中,用數組來表示
#include <stdio.h>int main(char argc, char *argv[]) {int i = 0;int j = 0;char *str = "0 12";char buf[5] = {0}; //最好設置的數組長度比較大,大于或者等于字符串長度while(*str != '\0'){buf[i] = *str;i++;str++;} buf[i] = '\0'; //數組的最后一個字符設置為'\0'printf("%s\n", buf); //打印整個數組的值for(j = 0; j < 5; j++){printf("buf[%d]=%d ", j, buf[j]); //另一種方式看數組最后的賦值結果}printf("\n");return 0; }編譯并執行后的結果顯示:
[root@localhost test]# make buc_b cc buc_b.c -o buc_b [root@localhost test]# ./buc_b 0 12 buf[0]=48 buf[1]=32 buf[2]=49 buf[3]=50 buf[4]=0分析結果:
可以查看ASCII碼,可知,
字符'0'的十進制是48,
空格SPACE的十進制是32,
字符'1'的十進制是49,
字符'2'的十進制是50,
字符'\0'的十進制是0
總結
以上是生活随笔為你收集整理的C语言 —— 把字符指针中的字符串,存入字符数组中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小技巧 —— linux中怎么简单的复制
- 下一篇: C语言 —— 整型(int)类型数据,做