c語(yǔ)言中書(shū)寫(xiě)刪除字符串中某個(gè)字符的程序的具體操作步驟如下:
目前成都創(chuàng)新互聯(lián)公司已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、吳忠網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
1、編寫(xiě)頭函數(shù),包括“#include stdio.h.”與“#include string.h.“。
2、定義兩個(gè)相同容量的字符串儲(chǔ)存的變量?char a【100】;? char b【100】。以及整數(shù)變量?int c;int i=0,j=0;其中a[100]是存字符串的,b【100】是存你刪除對(duì)應(yīng)字符的字符串的,整數(shù)C是想刪除第幾位。j ,i 是后面for循壞中要使用到的變量。
3、編寫(xiě)printf(“請(qǐng)輸入你的字符串”);scanf(“%s”,a);printf(“請(qǐng)輸入你想要?jiǎng)h除第幾位字符”);scanf(“%d”,c)。
這幾行代碼主要是顯示界面,以及具體想要?jiǎng)h除什么字符串以及具體刪除第幾位字符使用的。
4、繼續(xù)編寫(xiě)for(i=0;istrlen(a);i++) ( if(i+1!=c){ ?b【j】=a【i】; j++;)( ? ? ? ? printf(" %s",b);)。
這幾行代碼邏輯語(yǔ)句是:只要當(dāng)i+1不等于c時(shí)把a(bǔ)【i】里面的字符賦給b【i】,那么這樣當(dāng)i+1=c時(shí)不把它賦給b【i】從而實(shí)現(xiàn)刪除功能。
5、程序編輯完畢,可以進(jìn)行刪除字符了。
方法1:使用運(yùn)行庫(kù)函數(shù)memset():
memset(str, 0, sizeof(str));
方法2:使用Windows API函數(shù)ZeroMemory():
ZeroMemory(str, sizeof(str));
但不能用于指針。指針的情況下,必須這樣:
struct mystr {.......} *p;
...
memset(p, 0, sizeof(struct mystr));
或:
ZeroMemory(p, sizeof(struct mystr));
字符串函數(shù)string.h
在頭文件string.h中定義了兩組字符串函數(shù)。第一組函數(shù)的名字以str開(kāi)頭;第二組函數(shù)的名字以mem開(kāi)頭。只有函數(shù)memmove對(duì)重疊對(duì)象間的拷貝進(jìn)行了定義,而其他函數(shù)都未定義。比較類(lèi)函數(shù)將其變量視為unsigned char類(lèi)型的數(shù)組。
1.strcpy
#include string.h
char *strcpy(char *str1, const char *str2);
把字符串str2(包括'\0')拷貝到字符串str1當(dāng)中,并返回str1。
2. strncpy
#include string.h
char *strncpy(char *str1, const char *str2, size_t count);
把字符串str2中最多count個(gè)字符拷貝到字符串str1中,并返回str1。如果str2中少于count個(gè)字符,那么就用'\0'來(lái)填充,直到滿足count個(gè)字符為止。
3.strcat
#include string.h
char *strcat(char *str1, const char *str2);
把str2(包括'\0')拷貝到str1的尾部(連接),并返回str1。其中終止原str1的'\0'被str2的第一個(gè)字符覆蓋。
4.strncat
#include string.h
char *strncat(char *str1, const char *str2, size_t count);
把str2中最多count個(gè)字符連接到str1的尾部,并以'\0'終止str1,返回str1。其中終止原str1的'\0'被str2的第一個(gè)字符覆蓋。
注意,最大拷貝字符數(shù)是count+1。
5.strcmp
#include string.h
int strcmp(const char *str1, const char *str2);
按字典順序比較兩個(gè)字符串,返回整數(shù)值的意義如下:
小于0,str1小于str2;
等于0,str1等于str2;
大于0,str1大于str2;
6 strncmp
#include string.h
int strncmp(const char *str1, const char *str2, size_t count);
同strcmp,除了最多比較count個(gè)字符。根據(jù)比較結(jié)果返回的整數(shù)值如下:
小于0,str1小于str2;
等于0,str1等于str2;
大于0,str1大于str2;
7 strchr
#include string.h
char *strchr(const char *str, int ch);
返回指向字符串str中字符ch第一次出現(xiàn)的位置的指針,如果str中不包含ch,則返回NULL。
8 strrchr
#include string.h
char *strrchr(const char *str, int ch);
返回指向字符串str中字符ch最后一次出現(xiàn)的位置的指針,如果str中不包含ch,則返回NULL。
9 strspn
#include string.h
size_t strspn(const char *str1, const char *str2);
返回字符串str1中由字符串str2中字符構(gòu)成的第一個(gè)子串的長(zhǎng)度。
10 strcspn
#include string.h
size_t strcspn(const char *str1, const char *str2);
返回字符串str1中由不在字符串str2中字符構(gòu)成的第一個(gè)子串的長(zhǎng)度。
11 strpbrk
#include string.h
char *strpbrk(const char *str1, const char *str2);
返回指向字符串str2中的任意字符第一次出現(xiàn)在字符串str1中的位置的指針;如果str1中沒(méi)有與str2相同的字符,那么返回NULL。
12 strstr
#include string.h
char *strstr(const char *str1, const char *str2);
返回指向字符串str2第一次出現(xiàn)在字符串str1中的位置的指針;如果str1中不包含str2,則返回NULL。
13 strlen
#include string.h
size_t strlen(const char *str);
返回字符串str的長(zhǎng)度,'\0'不算在內(nèi)。
14 strerror
#include string.h
char *strerror(int errnum);
返回指向與錯(cuò)誤序號(hào)errnum對(duì)應(yīng)的錯(cuò)誤信息字符串的指針(錯(cuò)誤信息的具體內(nèi)容依賴(lài)于實(shí)現(xiàn))。
15 strtok
#include string.h
char *strtok(char *str1, const char *str2);
在str1中搜索由str2中的分界符界定的單詞。
對(duì)strtok()的一系列調(diào)用將把字符串str1分成許多單詞,這些單詞以str2中的字符為分界符。第一次調(diào)用時(shí)str1非空,它搜索str1,找出由非str2中的字符組成的第一個(gè)單詞,將str1中的下一個(gè)字符替換為'\0',并返回指向單詞的指針。
隨后的每次strtok()調(diào)用(參數(shù)str1用NULL代替),均從前一次結(jié)束的位置之后開(kāi)始,返回下一個(gè)由非str2中的字符組成的單詞。當(dāng)str1中沒(méi)有這樣的單詞時(shí)返回NULL。每次調(diào)用時(shí)字符串str2可以不同。
如:
char *p;
p = strtok("The summer soldier,the sunshine patriot", " ");
printf("%s", p);
do {
p = strtok("\0", ", "); /* 此處str2是逗號(hào)和空格 */
if (p)
printf("|%s", p)
} while (p);
顯示結(jié)果是:The | summer | soldier | the | sunshine | patriot
假設(shè)這個(gè)一維字符串?dāng)?shù)組是str[80]----不一定是一維字符串?dāng)?shù)組,多維數(shù)組,結(jié)構(gòu)都可以。
方法1:使用運(yùn)行庫(kù)函數(shù)memset():
memset(str,
0,
sizeof(str));
方法2:使用Windows
API函數(shù)ZeroMemory():
ZeroMemory(str,
sizeof(str));
但不能用于指針。指針的情況下,必須這樣:
struct
mystr
{.......}
*p;
...
memset(p,
0,
sizeof(struct
mystr));
或:
ZeroMemory(p,
sizeof(struct
mystr));