中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

C中的字符串:如何聲明變量、初始化、打印、示例

發(fā)布于:2021-02-21 00:05:20

1

834

0

C 聲明變量 初始化 打印 示例

C中的String是什么?

C中的字符串只不過是線性序列中字符的集合?!癈”總是將字符串視為單個數(shù)據(jù),即使它包含空格。使用單引號表示法定義單個字符。字符串用雙引號表示。

Example, "Welcome to the world of programming!"

'C'提供了標(biāo)準(zhǔn)庫<string.h>,其中包含許多函數(shù),可用于輕松地對C中的字符串執(zhí)行復(fù)雜的操作。

如何在C中聲明和初始化字符串

C字符串是以char作為數(shù)據(jù)類型的簡單數(shù)組?!癈”語言不直接支持字符串作為數(shù)據(jù)類型。因此,要在C中顯示字符串,需要使用字符數(shù)組。

在C中將變量聲明為字符串的一般語法如下:

char string_variable_name [array_size];

字符串的經(jīng)典聲明可以如下所示:

char string_name[string_length] = "string";

聲明C字符串變量時必須定義數(shù)組的大小,因為它用于計算C字符串變量中要存儲的字符數(shù)。字符串聲明的一些有效示例如下:

char first_name[15];    //declaration of a string variable
char last_name[15];

上面的示例表示數(shù)組大小為15的字符串變量。這意味著給定的C字符串?dāng)?shù)組最多只能容納15個字符。數(shù)組的索引從0開始,因此它將存儲0-14位置的字符。C編譯器會自動將空字符“| 0”添加到創(chuàng)建的字符數(shù)組中。

讓我們研究一下C中的字符串初始化。下面的示例演示了C中字符串的初始化

char first_name[15] = "ANTHONY";
char first_name[15] = {'A','N','T','H','O','N','Y',''}; // NULL character '' is required at end in this declaration
char string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */
char string2 [ ] = "world";  /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */
char string3[6] = {'h', 'e', 'l', 'l', 'o', ''} ; /*Declaration as set of characters ,Size 6*/

在string3中,必須顯式添加空字符,并且字符用單引號括起來。

“C”還允許我們在不定義字符數(shù)組大小的情況下初始化字符串變量。可以通過以下方式實現(xiàn)。

char first_name[ ] = "NATHAN";

C中字符串的名稱用作指針,因為它基本上是一個數(shù)組。

字符串輸入:讀取字符串

在編寫要求用戶輸入的交互式程序時,C提供scanf()、get()和fgets()函數(shù)來查找用戶輸入的一行文本。

使用scanf()讀取時,我們使用“%s”格式說明符而不使用“&;”來訪問變量地址,因為數(shù)組名充當(dāng)指針。例如:

#includeint main() {
char name[10];
int age;
printf("Enter your first name and age: n");
scanf("%s %d", name, &age);
printf("You entered: %s %d",name,age);
}

輸出:

Enter your first name and age:
John_Smith 48

scanf函數(shù)的問題是它從不讀取C中的整個字符串。一旦出現(xiàn)空格、換行符、垂直制表符、換行符或回車符,它就會停止讀取過程。假設(shè)我們以“Guru99 Tutorials”的形式提供輸入,那么scanf函數(shù)將永遠不會讀取整個字符串,因為兩個名稱之間會出現(xiàn)一個空格字符。scanf函數(shù)將只讀取Guru99。

為了讀取包含空格的字符串,我們使用gets()函數(shù)。獲取忽略空格。當(dāng)?shù)竭_換行符(按下回車鍵)時,它停止讀取。例如:

#include <stdio.h>
int main() {
char full_name[25];
printf("Enter your full name: ");
gets(full_name);
printf("My full name is %s ",full_name);
return 0;
}

輸出:

Enter your full name: Dennis Ritchie
My full name is Dennis Ritchie

另一個比gets()更安全的替代方法是fgets()函數(shù),它讀取指定數(shù)量的字符。例如:

#include <stdio.h>
int main() {
char name[10];
printf("Enter your  name plz: ");
fgets(name, 10, stdin);
printf("My name is %s ",name);
return 0;}

輸出:

Enter your name plz: Carlos
My name is Carlos

fgets()參數(shù)是:

  • 字符串名,

  • 要讀取的字符數(shù),

  • stdin表示從標(biāo)準(zhǔn)輸入(即鍵盤)讀取。

字符串輸出:打印/顯示字符串

標(biāo)準(zhǔn)printf函數(shù)用于在輸出設(shè)備上以C打印或顯示字符串。使用的格式說明符是%s。

例如

printf("%s", name);

字符串輸出是通過fputs()和printf()函數(shù)完成的。

fputs()函數(shù)

fputs()需要字符串的名稱和指向要顯示文本的位置的指針。我們使用標(biāo)準(zhǔn)輸出的stdout來打印到屏幕。用于示例:

#include <stdio.h>
int main()
{char town[40];
 printf("Enter your town: ");
 gets(town);
 fputs(town, stdout);
 return 0;}

輸出:

Enter your town: New York
New York

puts函數(shù)

puts函數(shù)用于在輸出設(shè)備上打印C中的字符串,并將光標(biāo)移回第一個位置。puts函數(shù)可按以下方式使用:

#include <stdio.h>
int main() {
char name[15];
gets(name);        //reads a string
puts(name);        //displays a string
return 0;}

這個函數(shù)的語法比其他函數(shù)簡單。

字符串庫

標(biāo)準(zhǔn)的“ C”庫提供各種功能來操縱程序中的字符串。這些函數(shù)也稱為字符串處理程序。所有這些處理程序都存在于<string.h>頭文件中。

{xunruicms_img_title}

讓我們考慮下面的程序,該程序演示了字符串庫功能:

#include <stdio.h>
#include <string.h>
int main () {
//string initialization
char string1[15]="Hello";
char string2[15]=" World!";
char string3[15];
int val;

//string comparison
val= strcmp(string1,string2);
if(val==0){
   printf("Strings are equaln");
}
else{
   printf("Strings are not equaln");
}

//string concatenation
printf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!

//string length
printf("nLength of first string:%d",strlen(string1));
printf("nLength of second string:%d",strlen(string2));

//string copy
printf("nCopied string is:%sn",strcpy(string3,string1));  //string1 is copied into string3
return 0;
}

輸出:

Strings are not equal
Concatenated string:Hello World!
Length of first string:12
Length of second string:7
Copied string is:Hello World!

其他重要的庫函數(shù)包括:

  • strncmp(str1,str2,n):如果str1的前n個字符等于str2的前n個字符,則返回0;如果str1 <str2,則小于0;如果str1> str2,則大于0。

  • strncpy(str1,str2,n)此函數(shù)用于從另一個字符串復(fù)制一個字符串。將str2的前n個字符復(fù)制到str1

  • strchr(str1,c):它返回指向str1中首次出現(xiàn)的char c的指針,如果找不到字符,則返回NULL。

  • strrchr(str1,c):它反向搜索str1并返回一個指向char c在str1中位置的指針;如果找不到字符,則返回NULL。

  • strstr(str1,str2):它返回指向str1中第一次出現(xiàn)的str2的指針,如果未找到str2,則返回NULL。

  • strncat(str1,str2,n)將str2的前n個字符附加(連接)到str1的末尾,并返回指向str1的指針。

  • strlwr():將字符串轉(zhuǎn)換為小寫。

  • strupr():將字符串轉(zhuǎn)換為大寫。

  • strrev():反轉(zhuǎn)字符串。

將字符串轉(zhuǎn)換為數(shù)字

在C編程中,我們可以將一串?dāng)?shù)字字符轉(zhuǎn)換為一個數(shù)字值,以防止運行時錯誤。stdio.h庫包含以下用于將字符串轉(zhuǎn)換為數(shù)字的函數(shù):

  • int atoi(str)代表ASCII到整數(shù);它將str轉(zhuǎn)換為等效的int值。如果第一個字符不是數(shù)字或未遇到數(shù)字,則返回0。

  • double atof(str)表示ASCII浮動,它將str轉(zhuǎn)換為等效的double值。如果第一個字符不是數(shù)字或未遇到數(shù)字,則返回0.0。

  • long int atol(str)代表ASCII到long int,將str轉(zhuǎn)換為等效的long整數(shù)值。如果第一個字符不是數(shù)字或未遇到數(shù)字,則返回0。

以下程序演示了atoi()函數(shù):

#include <stdio.h>
int main()
{char *string_id[10];
 int ID;
 printf("Enter a number: ");
 gets(string_id);
 ID = atoi(string_id);
  printf("you enter %d  ",ID);
 return 0;}

輸出:

Enter a number: 221348
you enter 221348

  • 字符串指針聲明(例如char * string =“ language”)是常量,不能修改。

概要

  • 字符串是存儲在字符數(shù)組中的一系列字符。

  • 字符串是用雙引號引起來的文本。

  • 諸如“ d”之類的字符不是字符串,而是用單引號引起來。

  • “ C”提供了標(biāo)準(zhǔn)的庫函數(shù)來處理程序中的字符串。字符串操縱器存儲在<string.h>頭文件中。

  • 在用于程序之前,必須聲明或初始化字符串。

  • 有不同的輸入和輸出字符串函數(shù),每個函數(shù)都有其功能。

  • 不要忘記包括字符串庫以使用其功能

  • 我們可以通過atoi(),atof()和atol()將字符串轉(zhuǎn)換為數(shù)字,這對于編碼和解碼過程非常有用。

  • 我們可以通過在C中定義字符串?dāng)?shù)組來操縱不同的字符串。