c語言中087,c語言中081合法嗎

本文目錄一覽:

請問一下C語言關於棧的基本應用

#include stdlib.h

010 #include malloc.h

011 #include memory.h

012 #include assert.h

/*————————————————————

12 // 棧結構的定義

13 ————————————————————*/

14 typedef struct Stack

15 {

16 ElemType *base; // 棧基址

17 ElemType *top; // 棧頂

18 int stacksize; // 棧存儲空間的尺寸

19 } SqStack;

20

21 /*————————————————————

22 // 棧的基本操作

23 ————————————————————*/

24

25 bool InitStack(SqStack *S);

26 void DestroyStack(SqStack *S);

27 bool StackEmpty(SqStack S);

28 int StackLength(SqStack S);

29 bool GetTop(SqStack S, ElemType *e);

30 void StackTraverse(SqStack S, void (*fp)(ElemType));

31 bool Push(SqStack *S, ElemType e);

32 bool Pop(SqStack *S, ElemType *e);

33 bool bracketMatch(SqStack *S,const char *arr);

const int STACK_INIT_SIZE = 100; // 初始分配的長度

016 const int STACKINCREMENT = 10; // 分配內存的增量

017

018 /*————————————————————

019 操作目的: 初始化棧

020 初始條件: 無

021 操作結果: 構造一個空的棧

022 函數參數:

023 SqStack *S 待初始化的棧

024 返回值:

025 bool 操作是否成功

026 ————————————————————*/

027 bool InitStack(SqStack *S)

028 {

029 S-base = (ElemType *)malloc(STACK_INIT_SIZE *sizeof(ElemType));

030 if(S -base == NULL)

031 return false;

032 S -top = S -base;

033 S-stacksize = STACK_INIT_SIZE;

034 return true;

035 }

036

037 /*————————————————————

038 操作目的: 銷毀棧

039 初始條件: 棧S已存在

040 操作結果: 銷毀棧S

041 函數參數:

042 SqStack *S 待銷毀的棧

043 返回值:

044 無

045 ————————————————————*/

046 void DestroyStack(SqStack *S)

047 {

048 assert(S != NULL);

049 free(S -base);

050 S-base = S-top = NULL;

051 }

052

053 /*————————————————————

054 操作目的: 判斷棧是否為空

055 初始條件: 棧S已存在

056 操作結果: 若S為空棧,則返回true,否則返回false

057 函數參數:

058 SqStack S 待判斷的棧

059 返回值:

060 bool 是否為空

061 ————————————————————*/

062 bool StackEmpty(SqStack S)

063 {

064 assert((S.base != NULL)(S.top != NULL));

065 return (S.base == S.top);

066 }

067

068 /*————————————————————

069 操作目的: 得到棧的長度

070 初始條件: 棧S已存在

071 操作結果: 返回S中數據元素的個數

072 函數參數:

073 SqStack S 棧S

074 返回值:

075 int 數據元素的個數

076 ————————————————————*/

077 int StackLength(SqStack S)

078 {

079 assert((S.base != NULL)(S.top != NULL));

080 return (S.top – S.base);

081 }

082

083 /*————————————————————

084 操作目的: 得到棧頂元素

085 初始條件: 棧S已存在

086 操作結果: 用e返回棧頂元素

087 函數參數:

088 SqStack S 棧S

089 ElemType *e 棧頂元素的值

090 返回值:

091 bool 操作是否成功

092 ————————————————————*/

093 bool GetTop(SqStack S, ElemType *e)

094 {

095 assert((S.base != NULL) (S.top != NULL));

096 if(S.top == S.base)

097 exit(0);

098 *e = *(S.top – 1);

099 return true;

100 }

101

102 /*————————————————————

103 操作目的: 遍歷棧

104 初始條件: 棧S已存在

105 操作結果: 依次對S的每個元素調用函數fp

106 函數參數:

107 SqStack S 棧S

108 void (*fp)() 訪問每個數據元素的函數指針

109 返回值:

110 無

111 ————————————————————*/

112 void StackTraverse(SqStack S, void (*fp)(ElemType))

113 {

114 assert((S.base != NULL) (S.top != NULL));

115 while(S.base S.top)

116 {

117 (*fp)(*S.base);

118 S.base++;

119 }

120 }

121

122 /*————————————————————

123 操作目的: 壓棧——插入元素e為新的棧頂元素

124 初始條件: 棧S已存在

125 操作結果: 插入數據元素e作為新的棧頂

126 函數參數:

127 SqStack *S 棧S

128 ElemType e 待插入的數據元素

129 返回值:

130 bool 操作是否成功

131 ————————————————————*/

132 bool Push(SqStack *S, ElemType e)

133 {

134 if(S == NULL)

135 return false;

136 assert((S-base != NULL) (S -top != NULL));

137 if(S -top – S -base = S-stacksize)

138 {

139 S -base = (ElemType *)realloc(S -base,(S -stacksize + STACKINCREMENT) * sizeof(ElemType));

140 if(! S -base)

141 exit(0);

142 S -top = S-base + S -stacksize;

143 S -stacksize += STACKINCREMENT;

144 }

145 *(S -top++) = e;

146 return true;

147 }

148

149 /*————————————————————

150 操作目的: 彈棧——刪除棧頂元素

151 初始條件: 棧S已存在且非空

152 操作結果: 刪除S的棧頂元素,並用e返回其值

153 函數參數:

154 SqStack *S 棧S

155 ElemType *e 被刪除的數據元素值

156 返回值:

157 bool 操作是否成功

158 ————————————————————*/

159 bool Pop(SqStack *S, ElemType *e)

160 {

161 if((* S).top == (*S).base)

162 return false;

163 *e = * –(* S).top;

164 return true;

165 }

C語言怎樣判斷合法轉義字符

‘\0’是八進制的轉移字符,如果看到:\087這就是非法的,’\0x’表示十六進制,還有一些必備的如:’\n’,’\r’這些。

和普通的字符判斷相同,比如判斷和’a’是否相同,ch==’a’,那麼判斷轉義一樣,如ch==’\n’,邏輯表達式的結果只有兩個,true和false,所有的邏輯表達式都一樣,為真就是true,否則就是false。

#includestdio.h

int main(){

char a[20]=”abc\’efgh”;

int i=0;

for(i=0;i20;i++){

if(a[i]==’\\’a[i+1]==’\”)

printf(“true,%d”,i);

if(a[i]==’\”)

printf(“false”);

if(a[i]==0){

printf(“%d”,i);

break;

擴展資料:

轉義序列通常有兩種功能。第一個是編碼一個句法上的實體,如設備命令或者無法被字母表直接表示的特殊數據。第二種功能,也叫字符引用,用於表示無法在當前上下文中被鍵盤錄入的字符(如字符串中的回車符),或者在當前上下文中會有不期望的含義的字符(如C語言字符串中的雙引號字符”,不能直接出現,必須用轉義序列表示)。

在後面那種情況,轉義序列是一種由轉義字符自身和一個被引用的字符組成的一個二合字母(digraph)情形。

參考資料來源:百度百科-轉義字符

C語言中如何判斷是不是合法轉義字符?

‘\0’是八進制的轉移字符,如果看到:\087這就是非法的,’\0x’表示十六進制,還有一些必備的如:’\n’,’\r’這些。

和普通的字符判斷相同,比如判斷和’a’是否相同,ch==’a’,那麼判斷轉義一樣,如ch==’\n’,邏輯表達式的結果只有兩個,true和false,所有的邏輯表達式都一樣,為真就是true,否則就是false。

#includestdio.h

int main(){

char a[20]=”abc\’efgh”;

int i=0;

for(i=0;i20;i++){

if(a[i]==’\\’a[i+1]==’\”)

printf(“true,%d”,i);

if(a[i]==’\”)

printf(“false”);

if(a[i]==0){

printf(“%d”,i);

break;

數據類型關鍵字

short:修飾int,短整型數據,可省略被修飾的int。(KR時期引入)

long:修飾int,長整型數據,可省略被修飾的int。(KR時期引入)

long long:修飾int,超長整型數據,可省略被修飾的int。(C99標準新增)

signed:修飾整型數據,有符號數據類型。(C89標準新增)

unsigned:修飾整型數據,無符號數據類型。(KR時期引入)

restrict:用於限定和約束指針,並表明指針是訪問一個數據對象的初始且唯一的方式。(C99標準新增)

複雜類型關鍵字

struct:結構體聲明。(KR時期引入)

union:聯合體聲明。(KR時期引入)

enum:枚舉聲明。(C89標準新增)

typedef:聲明類型別名。(KR時期引入)

sizeof:得到特定類型或特定類型變量的大小。(KR時期引入)

inline:內聯函數用於取代宏定義,會在任何調用它的地方展開。(C99標準新增)

C語言 p=abc\078a\001b q=123\087\123\n 輸出strlen分別為多

結果是8和3

分析

strlen 函數的原理是,遇到’\0′ 空字符 就認為字符串結束

分析p

abc

\07是八進制數,為一個字符 ‘\a’,代表 滴滴聲

8

a

\001

b

共8個

分析q

123

\0 空字符

故只有3

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/309912.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-04 19:31
下一篇 2025-01-04 19:31

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論