當前位置:首頁 » 編程語言 » c語言操作字元串

c語言操作字元串

發布時間: 2022-08-15 00:58:49

c語言關於字元串的操作函數有哪些

string.h頭文件中包含的字元串函數

void*memcpy(void*dest,constvoid*src,size_tn);//將n位元組長的內容從一個內存地址復制到另一個地址;如果兩個地址存在重疊,則最終行為未定義
void*memmove(void*dest,constvoid*src,size_tn);//將n位元組長的內容從一個內存地址復制到另一個地址;與memcpy不同的是它可以正確作用於兩個存在重疊的地址
void*memchr(constvoid*s,charc,size_tn);//在從s開始的n個位元組內查找c第一次出現的地址並返回,若未找到則返回NULL
intmemcmp(constvoid*s1,constvoid*s2,size_tn);//對從兩個內存地址開始的n個字元進行比較
void*memset(void*,int,size_t);//用某種位元組內容覆寫一段內存空間
char*strcat(char*dest,constchar*src);//在字元串dest之後連接上src
char*strncat(char*dest,constchar*src,size_tn);//從src截取n個字元連接在字元串dest之後,返回dest字元串
char*strchr(constchar*str,intch);//從字元串str頭開始查找字元ch首次出現的位置
char*strrchr(constchar*str,intch);//從字元串str尾開始查找字元ch首次出現的位置
intstrcmp(constchar*,constchar*);//基於字典順序比較兩個字元串
intstrncmp(constchar*,constchar*,size_t);//基於字典順序比較兩個字元串,最多比較n個位元組
intstrcoll(constchar*,constchar*);//基於當前區域設置的字元順序比較兩個字元串
char*strcpy(char*str1,constchar*str2);//將str2拷貝給str1
char*strncpy(char*str1,constchar*str2,size_tn);//截取str2的n個字元拷貝給str1
char*strerror(int);//返回錯誤碼對應的解釋字元串,參見errno.h(非線程安全函數)
size_tstrlen(constchar*);//返回一個字元串的長度
size_tstrspn(constchar*s,constchar*strCharSet);//從字元串s的起始處開始,尋找第一個不出現在strCharSet中的字元,返回其位置索引值。換句話說,返回從字元串s的起始位置的完全由strCharSet中的字元構成的子串的最大長度。strspn為stringspan的縮寫。不支持多位元組字元集。
size_tstrcspn(constchar*s,constchar*strCharSet);//從字元串s的起始處開始,尋找第一個出現在strCharSet中的字元,返回其位置索引值。換句話說,返回從字元串s的起始位置的完全由不屬於strCharSet中的字元構成的子串的最大長度。strcspn為stringcomplementspan的縮寫。不支持多位元組字元集。
char*strpbrk(constchar*s,constchar*strCharSet);//在字元串s中查找strCharSet中任意字元第一次出現的位置的指針值。strpbrk為stringpointerbreak縮寫。不支持多位元組字元集。
char*strstr(constchar*haystack,constchar*needle);//在字元串haystack中查找字元串needle第一次出現的位置,heystack的長度必須長於needle
char*strtok(char*strToken,constchar*strDelimit);//將一個字元串strToken依據分界符(delimiter)分隔成一系列字元串。此函數非線程安全,且不可重入;但MSVC實現時使用了thread-localstaticvariable因而是線程安全的單仍然是不可重入,即在單線程中不能對兩個源字元串交替調用該函數來分析token,應當對一個字元串分析完成後再處理別的字元串。
size_tstrxfrm(char*dest,constchar*src,size_tn);//根據當前locale轉換一個字元串為strcmp使用的內部格式

㈡ c語言中如何輸入輸出字元串

在<string.h>頭文件中用字元串處理函數輸入和輸出,gest用來輸入,puts用來輸出。

字元串輸入函數gets,從鍵盤鍵入以回車結束的字元串放入字元數組中,並自動加』'。輸入串長度應小於字元數組維數,字元串中可以包含空格。

字元串輸出函數puts,向顯示器輸出字元串(輸出完,自動換行,即用' '替'')。字元數組必須以''結束。

示例代碼如下:

#include<string.h>

int main()

{

char str[40];

printf("請輸入字元串");

gets(str);

printf("請輸出字元串");

puts(str);

system("pause");

return 0;

}

(2)c語言操作字元串擴展閱讀

在C中,對文件的操作分為兩種方式,即流式文件操作和I/O文件操作。

流式文件操作,這種方式的文件操作有一個重要的結構FILE,FILE在頭文件stdio.h中定義如下:

typedef struct {

int level; /* fill/empty level of buffer */

unsigned flags; /* File status flags */

char fd; /* File descriptor */

unsigned char hold; /* Ungetc char if no buffer */

int bsize; /* Buffer size */

unsigned char _FAR *buffer; /* Data transfer buffer */

unsigned char _FAR *curp; /* Current active pointer */

unsigned istemp; /* Temporary file indicator */

short token; /* Used for validity checking */

} FILE; /* This is the FILE object */

直接I/O文件操作,這是C提供的另一種文件操作,它是通過直接存/取文件來完成對文件的處理,此類文件操作常用的函數及其所用的一些符號在io.h和 fcntl.h中定義,在使用時要加入相應的頭文件。

㈢ 如何用c語言來表達一個字元串

1)在串值後面加一個不計入長度的結束標記字元,比如'\0'來表示串值的終結

初始化一個字元串的方法如下,在最後添加'\0'

char str[] = {'I','a','m','h','a','p','p','y','\0'};
也可以直接使用字元串常量初始化字元數組(系統自動加上'\0'),這種方法符合人們的習慣。

char str[] = "I am happy";
或者
char str[] = {"I am happy"};
注意:不能使用下面的賦值方式:
char str[20];
str = "I am happy";
但可以用字元指針指向這個字元串:
char *str;
str = "I love China";

(2)將實際串長度值保存在數組0的下標下

#define MAXSIZE 20 //數組的長度
typdef char String[MAXSIZE+1];
初始化字元串的方法:

String t;
StrAssign(t,"I am happy");
int StrAssign(String T,char *chars)
{
T[0] = strlen(chars); //下標為0存放數組長度
for(i=1;i<=strlen(chars);i++) //下標位置從1開始存放數據
{
T[i] = *(chars+i-1);
}
return 1;
}
(3)使用結構體類型(自定義類型)

#define MAXSIZE 20
typedef struct{
char ch[MAXSIZE];
int len;
}String;
其中:MAXSIZE表示串的最大長度,ch是存儲字元串的一維數組,len是字元串的長度
初始化函數示例:

String t;
StrAssign(&t,"I am happy");
int StrAssign(String *t,char *chars)
{
int i;
if(strlen(chars)>MAXSIZE+1) //字元串的長度大於數組的長度,操作失敗,返回0
return 0;
for(i=0;i<strlen(chars);i++)
{
t->ch[i] = *(chars+i);
}
t->len = strlen(chars); //數組的長度
return 1; //返回1,操作成功
}
說明:這里的StrAssign函數的參數t使用的是指針,是因為結構體變數做做形參,用法和普通變數一樣屬於值傳遞方式,在子函數中要給t賦值,所以輸入的是t的指針。與之對比的是(2)子函數中T是數組,傳入的是數組的首地址(改變形參也就改變了實參)。

————————————————
版權聲明:本文為CSDN博主「chenkaibsw」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/chenkaibsw/article/details/78957944

㈣ c語言如何表示字元串

c語言中沒有字元串,只有字元數組用char
s[length]來表示。length表示你所要的字元串有多少個字元。這和c++中string是有區別的,c++中string是可以直接賦值如string
s;s="hello
world";但是c語言中的字元數組區不能這樣。詳細的c++字元串可在http://www.newsmth.net/pc/pccon.php?id=10002714&nid=359771查看。
c語言中字元串賦值方法strcpy(char*d,char*s)其中s代表是源字元串,d代表目標字元串,也就是你要賦值的字元串。希望對你有幫助。記得加點分

㈤ C語言中對字元串進行操作的標准庫函數有哪些

1)字元串操作
strcpy(p, p1) 復制字元串
strncpy(p, p1, n) 復制指定長度字元串
strcat(p, p1) 附加字元串
strncat(p, p1, n) 附加指定長度字元串
strlen(p) 取字元串長度
strcmp(p, p1) 比較字元串
strcasecmp忽略大小寫比較字元串
strncmp(p, p1, n) 比較指定長度字元串
strchr(p, c) 在字元串中查找指定字元
strrchr(p, c) 在字元串中反向查找
strstr(p, p1) 查找字元串
strpbrk(p, p1) 以目標字元串的所有字元作為集合,在當前字元串查找該集合的任一元素
strspn(p, p1) 以目標字元串的所有字元作為集合,在當前字元串查找不屬於該集合的任一元素的偏移
strcspn(p, p1) 以目標字元串的所有字元作為集合,在當前字元串查找屬於該集合的任一元素的偏移
* 具有指定長度的字元串處理函數在已處理的字元串之後填補零結尾符

2)字元串到數值類型的轉換
strtod(p, ppend) 從字元串 p 中轉換 double 類型數值,並將後續的字元串指針存儲到 ppend 指向的 char* 類型存儲。
strtol(p, ppend, base) 從字元串 p 中轉換 long 類型整型數值,base 顯式設置轉換的整型進制,設置為 0 以根據特定格式判斷所用進制,0x, 0X 前綴以解釋為十六進制格式整型,0 前綴以解釋為八進制格式整型
atoi(p) 字元串轉換到 int 整型
atof(p) 字元串轉換到 double 符點數
atol(p) 字元串轉換到 long 整型

3)字元檢查
isalpha() 檢查是否為字母字元
isupper() 檢查是否為大寫字母字元
islower() 檢查是否為小寫字母字元
isdigit() 檢查是否為數字
isxdigit() 檢查是否為十六進制數字表示的有效字元
isspace() 檢查是否為空格類型字元
iscntrl() 檢查是否為控制字元
ispunct() 檢查是否為標點符號
isalnum() 檢查是否為字母和數字
isprint() 檢查是否是可列印字元
isgraph() 檢查是否是圖形字元,等效於 isalnum() | ispunct()

㈥ 如何用c語言操作帶有空格的字元串

C語言中,可以用gets函數來接收輸入的字元串(包含空格)。
格式:gets(字元數組名);功能:gets函數用於將輸入的字元串內容存放到指定的字元數組中,輸入結尾的換行符'\n'被換成'\0'存儲在該數組中。

㈦ c語言怎麼用scanf輸入字元串

c語言用scanf輸入字元串:
char s[300];
scanf("%s",s);
這個語句只能輸入不包含空格和跳格鍵的字元串並且以回車符結束輸入。

㈧ c語言編程!字元串操作!


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* 字元串逆置 */
void string_inverse(char* src, char* dst)
{
int i, j;
for(j = 0, i = strlen(src)-1; i >=0; j++, i--)
{
dst[j] = src[i];
}
dst[j] = '';
}

/* 刪除偶數下標的字元 */
void string_delete(char* s, char* t)
{
int i, j;
for(j = 0, i = 0; i < strlen(s); i++)
{
if(i%2 == 0){
t[j++] = s[i];
//s[i] = 0x00;
}
}
t[j] = '';

for(i = 0; i < strlen(s); i++)
{
if(i%2 == 0){
s[i] = 0x00;
}
}
}


int main(int argc, char *argv[])
{
char src[512];
char dst[512];
char t[512];
memset(src, 0, 512);
memset(dst, 0, 512);
memset(t, 0, 512);

printf("輸入字元串:");
//scanf("%s", src);
gets(src);

printf("原始字元串:%s ", src);

/* 字元串逆置函數調用*/
string_inverse(src, dst);
printf("字元串逆置:%s ", dst);

/* 字元刪除函數調用 */
string_delete(src, t);
printf("刪除偶數下標的字元後,緩沖區t中的字元串:%s ", t);

return 0;
}

㈨ 在C語言中怎麼輸入一個字元串

在c語言中存儲一個字元串,一般有兩種方法,一種是字元指針,一種是使用字元數組。比如:
const char *str = "hello"; //使用字元串指針
const char str[] = "hello"; //使用字元數組
如果保存的字元串,需要修改。一般使用字元數組。比如:
char path[256] = "c:\\windows\\";
strcat(path, "system32");

㈩ c語言編程字元串處理

#include<stdio.h>char
str1[100],str2[100];char
*mystrcat(char
*s,char
*ct)
//字元串連接
{
while(*(s++));
s--;
while(*ct)
*(s++)
=
*(ct++);
return
s;
}char
*mystrcpy(char
*s,char
*ct)
{
while(*(s++)=*ct,*(ct++));
return
s;
}int
mystrcmp(char
*s,char
*ct)
{
while(*s
&&
*ct)
{
if(*(s++)
==
*(ct++))
continue;
else
return
*(s-1)-*(ct-1);
}
return
0;
}int
mystrlen(char
*s)
{
int
length
=
0;
while((length++,*s++));
return
length-1;
}char
*mystrsort(char
*s)
{
int
i,j,length
=
mystrlen(s);
char
t;
for(i
=
0;i
<
length;i++)
for(j
=
0;j
<
length-i-1;j++)
{
if(s[j]
>
s[j+1])
{
t
=s[j];
s[j]
=
s[j+1];
s[j+1]
=
t;
}
}
return
s;
}int
mystrfind(char
*s,char
ch)
{
int
index
=
0;
while(*s)
if(index++,*s
==
ch)
return
index;
return
-1;
}void
menu()
{
int
choose
=
1;
char
ch;
while(choose
!=
0)
{
printf("\n1.字元串連接\n2.拷貝\n3.比較\n4.求字元串長度\n5.對字元串內字元進行排序\n6.查找字元串中某個字元是否存在\n0.退出\n");
scanf("%d",&choose);
switch(choose)
{
case
1:printf("輸入2字元串:\n");
scanf("%s%s",str1,str2);
mystrcat(str1,str2);
printf("連接後的字元串:%s\n",str1);
break;
case
2:printf("輸入要拷貝的字元串:\n");
scanf("%s",str2);
mystrcpy(str1,str2);
printf("拷貝的字元串:%s\n",str1);
break;
case
3:printf("輸入要比較的2字元串:\n");
scanf("%s%s",str1,str2);
printf("%d\n",mystrcmp(str1,str2));
break;
case
4:
printf("輸入要求長度的字元串:\n");
scanf("%s",str1);
printf("長度為:%d\n",mystrlen(str1));
break;
case
5:
printf("輸入要求排序的字元串:\n");
scanf("%s",str1);
mystrsort(str1);
printf("排序後:%s\n",str1);
break;
case
6:printf("輸出字元串:\n");
scanf("%s",str1);
printf("輸入要查找的字元:\n");
scanf("%c",&ch);
scanf("%c",&ch);
printf("ch所在位置為%d\n",mystrfind(str1,ch));
}
}
}int
main()
{

menu();
return
0;
}

熱點內容
ftp伺服器怎麼訪問 發布:2025-01-20 17:08:36 瀏覽:68
一台伺服器多個同段地址怎麼通訊 發布:2025-01-20 16:45:58 瀏覽:734
i7源碼 發布:2025-01-20 16:40:48 瀏覽:983
抽簽源碼 發布:2025-01-20 16:38:35 瀏覽:62
密碼箱怎麼鎖住 發布:2025-01-20 16:32:17 瀏覽:31
編譯隔離 發布:2025-01-20 16:28:54 瀏覽:358
從哪裡看自己的qq賬號和密碼 發布:2025-01-20 16:22:33 瀏覽:400
sql語句動態 發布:2025-01-20 16:18:22 瀏覽:298
sql表或的語句 發布:2025-01-20 16:00:49 瀏覽:163
西瓜視頻怎麼緩存不了電影了 發布:2025-01-20 16:00:45 瀏覽:890