C 語(yǔ)言基礎(chǔ)教程

C 語(yǔ)言流程控制

C 語(yǔ)言函數(shù)

C 語(yǔ)言數(shù)組

C 語(yǔ)言指針

C 語(yǔ)言字符串

C 語(yǔ)言結(jié)構(gòu)體

C 語(yǔ)言文件

C 其他

C 語(yǔ)言參考手冊(cè)

C 語(yǔ)言字符串

在本教程中,您將學(xué)習(xí)C語(yǔ)言編程中的字符串。您將在示例的幫助下學(xué)習(xí)聲明它們,對(duì)其進(jìn)行初始化以及將它們用于各種 I / O(輸入/輸出)操作。

在C語(yǔ)言編程中,字符串是以null字符\0結(jié)束的字符序列。例如:

char c[] = "c string";

當(dāng)編譯器遇到用雙引號(hào)引起來的字符序列\(zhòng)0時(shí),默認(rèn)情況下會(huì)在末尾附加一個(gè)空字符。

C語(yǔ)言編程中的字符串存儲(chǔ)圖

如何聲明一個(gè)字符串?

聲明字符串的方法如下:

char s[5];

C語(yǔ)言編程中的字符串聲明

在這里,我們聲明了一個(gè)5個(gè)字符的字符串。

如何初始化字符串?

您可以通過多種方式初始化字符串。

char c[] = "abcd";

char c[50] = "abcd";

char c[] = {'a', 'b', 'c', 'd', '\0'};

char c[5] = {'a', 'b', 'c', 'd', '\0'};

C語(yǔ)言編程中字符串的初始化

讓我們?cè)倥e一個(gè)實(shí)例:

char c[5] = "abcde";

在這里,我們嘗試將6個(gè)字符(最后一個(gè)字符是'\0')分配給char具有5個(gè)字符的數(shù)組。這是錯(cuò)誤的做法,您永遠(yuǎn)不要這樣做。

給字符串賦值

C語(yǔ)言中數(shù)組和字符串一旦聲明,它們就不支持賦值運(yùn)算符。

char c[100];
c = "C programming";  // 錯(cuò)誤! 數(shù)組類型不可分配。

注意:使用strcpy()函數(shù)代替復(fù)制字符串。

從用戶處讀取字符串

可以使用scanf()函數(shù)讀取字符串。

scanf()函數(shù)讀取字符序列,直到遇到空格(空格,換行符,制表符等)。

示例1:scanf()讀取字符串

#include <stdio.h>
int main()
{
    char name[20];
    printf("輸入姓名: ");
    scanf("%s", name);
    printf("你的名字是 %s.", name);
    return 0;
}

輸出結(jié)果

輸入姓名: Dennis Ritchie
你的名字是 Dennis.

即使在上面的程序中輸入了Dennis Ritchie,名稱字符串中也只有“Dennis”。因?yàn)镈ennis后面有個(gè)空格。

如何讀取一行文字?

您可以使用該fgets()函數(shù)讀取一行字符串。并且,您可以puts()用來顯示字符串。

示例2:fgets()和puts()

#include <stdio.h>
int main()
{
    char name[30];
    printf("輸入姓名: ");
    fgets(name, sizeof(name), stdin);  //讀取字符串
    printf("姓名: ");
    puts(name);    //顯示字符串
    return 0;
}

輸出結(jié)果

輸入姓名: Tom Hanks
姓名: Tom Hanks

在這里,我們已使用fgets()函數(shù)從用戶讀取字符串。

fgets(name, sizeof(name), stdlin); //讀取字符串

sizeof(name)的結(jié)果是30。因此,我們可以接受最多30個(gè)字符作為輸入,這是name字符串的大小。

為了打印字符串,我們使用了put (name);

注意:gets()函數(shù)也可以接受用戶輸入。但是,它已從C標(biāo)準(zhǔn)中刪除。
這是因?yàn)間ets()允許您輸入任意長(zhǎng)度的字符。因此,可能存在緩沖區(qū)溢出。

將字符串傳遞給函數(shù)

字符串可以通過類似于數(shù)組的方式傳遞給函數(shù)。了解有關(guān)將數(shù)組傳遞給函數(shù)的更多信息。

示例3:將字符串傳遞給函數(shù)

#include <stdio.h>
void displayString(char str[]);

int main()
{
    char str[50];
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);             
    displayString(str);     //將字符串傳遞給函數(shù)   
    return 0;
}
void displayString(char str[])
{
    printf("字符串輸出: ");
    puts(str);
}

字符串和指針

類似于數(shù)組,字符串名稱“衰減”到指針。因此,您可以使用指針來操作字符串的元素。我們建議您在檢查此示例之前檢查C數(shù)組和指針。

示例4:字符串和指針

#include <stdio.h>

int main(void) {
  char name[] = "Harry Potter";

  printf("%c", *name);     // 輸出: H
  printf("%c", *(name+1));   // 輸出: a
  printf("%c", *(name+7));   // 輸出: o

  char *namePtr;

  namePtr = name;
  printf("%c", *namePtr);     // 輸出: H
  printf("%c", *(namePtr+1));   // 輸出: a
  printf("%c", *(namePtr+7));   // 輸出: o
}

常用的字符串函數(shù)

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清