2020年6月16日 星期二

C語言筆記4-字元陣列~字串1090615

1、字元陣列~字串的宣告
     程式例題~G:\我的雲端硬碟\c語言練習題\1資料型態宣告\7字串陣列設初值輸出.cpp
//字串設初值和輸出,字串最後一格的值自動設為\0, 作為結束代號
一般來說 scanf 遇到空白、\t、\n 就會自動中斷:
scanf("%s",str);  // 輸入「hello world」
printf("%s",str);  // 輸出「hello」

  scanf 可以自定欲接收的字元,改一下就可以接收空白等字元:
scanf("%[^\n]",str);  // 接收除了 \n 以外的所有字元
printf("%s",str);  // 輸出完整的「hello world」

#include <stdio.h>
#include<string.h>
int main() {
    char stra[5]="abg0";  //在dev c++ 需多給1格,在repl  不用
char strb[5]={'a','b',' ','0','h'};  //但如此給法,不用多給1格
    char strc[5]={0},strd[5]={},stre[5]="\0"; //給空的初值
char strf[5]; //未給初值,偶有印暫存值
int leng=strlen(stra);     //string.h 中的函式 strlen計算字串長度
    int lengstra=sizeof(stra) / sizeof(stra[0]);
    printf("stra length=%d\n",lengstra);
    printf("stra length=%d\n",leng);
    for(int i = 0; i < 5; i++) {
        printf("stra[%d]=%c\t",i,stra[i]);
        printf("strb[%d]=%c\t",i,strb[i]);
        printf("strc[%d]=%c\t",i,strc[i]);
        printf("strd[%d]=%c\t",i,strd[i]);
        printf("stre[%d]=%c\t",i,stre[i]);
        printf("strf[%d]=%c\n",i,strf[i]);
    }
    printf("\n");
    printf("stra=%s\t",stra);
printf("strb=%s\t",strb);
printf("strc=%s\t",strc);
printf("strd=%s\t",strd);
printf("stre=%s\t",stre);
printf("strf=%s\n",strf);
}
測試結果~
stra length=5
stra length=4
stra[0]=a       strb[0]=a       strc[0]=        strd[0]=        stre[0]=        strf[0]=
stra[1]=b       strb[1]=b       strc[1]=        strd[1]=        stre[1]=        strf[1]=
stra[2]=g       strb[2]=        strc[2]=        strd[2]=        stre[2]=        strf[2]=
stra[3]=0       strb[3]=0       strc[3]=        strd[3]=        stre[3]=        strf[3]=
stra[4]=        strb[4]=h       strc[4]=        strd[4]=        stre[4]=        strf[4]=

stra=abg0       strb=ab 0h      strc=   strd=   stre=   strf=


2、字元陣列長度和字串內容長度
 程式例題~G:\我的雲端硬碟\c語言練習題\1資料型態宣告\8字串陣列長度和字串內容長度.cpp
//int數字為4bytes,  陣列放5個int 5*4= #include <stdio.h>
#include<stdio.h>
#include<string.h>
int main(void) {
    char stra[3]={"ab"}; 
    int lengstra=sizeof(stra) / sizeof(stra[0]);
printf("sizeof stra length=%d\n",lengstra);  //陣列全部除以4bytes=陣列長度
printf("函式strlen計算stra length=%d\n",strlen(stra));
    for(int i = 0; i < lengstra; i++) {
        printf("stra[%d]=%c\t",i,stra[i]);
        printf("stra[%d]=%d\n",i,stra[i]); 
    }
    printf("\n");
printf("stra=%s\n",stra);
printf("\n");
}
測試結果~
sizeof stra length=3
函式strlen計算stra length=2
stra[0]=a       stra[0]=97
stra[1]=b       stra[1]=98
stra[2]=        stra[2]=0

stra=ab

3、串接2個字串
      程式例題~G:\我的雲端硬碟\c語言練習題\1資料型態宣告\9字串輸入連結2個字串.cpp
//輸入字串,連結2個字串
#include <stdio.h>
//#include<stdlib.h>
#include<string.h>
int main(){
int i=0;
char stra[7]="Hello ",strb[10];
printf("what is your name?=");
scanf("%s",strb);  //only input 10 char
strncat(stra,strb,10); //接受10個字元到stra後面
printf("%s\n",stra);
}
測試結果~
what is your name?=pig
Hello pig

沒有留言:

張貼留言

Chrome教學5-建立桌面捷徑1110217

 建立桌面捷徑