3 2 5 2 模擬C函式 scanf 功能

2021-07-05 02:20:53 字數 3321 閱讀 9643

在python

裡,沒有與

scanf

()直接等同的功能函式,因此需要格式化輸入,就需要使用正規表示式的功能來實現,並且正規表示式的功能比

scanf

()更加靈活,功能更加強大,下面就來列出一些等同的表達:

scanf()格式字串

正規表示式

%c%5c.%d

[-+]?\d+

%e,%e,%f

,%g[-+]?(\d+(\.d*)?|\.\d+)([ee][-+]?\d+)?

%i[-+]?(0[xx][\da-fa-f]+|0[0-7]*|\d+)

%o[-+]?[0-7]+

%s\s+

%u\d+

%x,%x

[-+]?(0[xx])?[\da-fa-f]+

輸入乙個字串的例子:

/usr/sbin/sendmail - 0 errors, 4 warnings

對於上面格式的字串,如果使用c

函式scanf

()來輸入,需要使用下面的格式來實現:

%s - %d errors, %d warnings

如果我們使用正規表示式來表示,如下:

(\s+) - (\d+) errors, (\d+) warnings

例子:print('scanf()')

pattern = re.compile(r"(\s+) - (\d+) errors, (\d+) warnings")

match = pattern.match('/usr/sbin/sendmail - 0 errors, 4 warnings')

if match:

print(match.groups())

結果輸出如下:

scanf()

('/usr/sbin/sendmail', '0', '4')

%c的例子:

print('scanf() %c')

pattern = re.compile(r".")

match = pattern.match('this is for test\n')

if match:

print(match.group())

結果輸出如下:

scanf() %c

t%5c的例子:

print('scanf() %5c')

pattern = re.compile(r".")

match = pattern.match('this is for test\n')

if match:

print(match.group())

結果輸出如下:

scanf() %5c

this 

%e, %e, %f, %g的例子:

print('scanf() %e, %e, %f, %g')

pattern = re.compile(r"[-+]?(\d+(\.\d*)?|\.\d+)([ee][-+]?\d+)?")

match = pattern.match('+200.3721\n')

if match:

print(match.group())

match = pattern.match('x9876\n')

if match:

print(match.group())#不匹配沒有輸出

結果輸出如下:

scanf() %e, %e, %f, %g

+200.3721

%i的例子:

print('scanf() %i')

pattern = re.compile(r"[-+]?(0[xx][\da-fa-f]+|0[0-7]*|\d+)")

match = pattern.match('0xaa55\n')

if match:

print(match.group())

match = pattern.match('234.56\n')

if match:

print(match.group())

結果輸出如下:

scanf() %i

0xaa55

八進位制的%o

的例子:

print('scanf() %o')

pattern = re.compile(r"[-+]?[0-7]+")

match = pattern.match('0756\n')

if match:

print(match.group())

match = pattern.match('898\n')

if match:

print(match.group())#不匹配沒有輸出

結果輸出如下:

scanf() %o

字串%s

的例子:

print('scanf() %s')

pattern = re.compile(r"\s+")

match = pattern.match('深圳是乙個小漁村

\n')

if match:

print(match.group())

match = pattern.match('898\n')

if match:

print(match.group())

結果輸出如下:

scanf() %s

深圳是乙個小漁村

%u的例子:

print('scanf() %u')

pattern = re.compile(r"\d+")

match = pattern.match('756\n')

if match:

print(match.group())

match = pattern.match('-898\n')

if match:

print(match.group())#不匹配沒有輸出

結果輸出如下:

scanf() %u

十六進製制%x, %x

的例子:

print('scanf() %x %x')

pattern = re.compile(r"[-+]?(0[xx])[\da-fa-f]+")

match = pattern.match('0x756\n')

if match:

print(match.group())

match = pattern.match('-898\n')

if match:

print(match.group())#不匹配沒有輸出

結果輸出如下:

scanf() %x %x

0x756

C語言 scanf 函式

scanf 函式是用來從外部輸入裝置向計算機主機輸入資料的。scanf 函式的一般格式 案例 已知圓柱體的底半徑radius 1.5,高high 2.0,求其體積。main 案例 已知圓柱體的底半徑為radius,高為high,求其體積。功能 說明函式scanf 的格式及作用。main 程式執行結果...

C語言scanf函式

四 注意事項 編寫程式的主要目的就是為了處理資料。資料從 來?資料的 有很多種方式,如從磁碟檔案中讀取資料 從資料庫中讀取資料 從網頁中抓取資料等,還有一種原始的方式就是從鍵盤輸入資料。在c語言中,有三個函式可以從鍵盤獲得使用者輸入。getchar 輸入單個字元,儲存到字元變數中。gets 輸入一行...

C語言 scanf函式

1 scanf函式,是乙個標準的輸入函式 是乙個阻塞式的函式 當使用scanf的時候,程式會等待使用者輸入,如果不輸入內容,程式不再往下執行 作用 接收從鍵盤輸的的內容 2 使用格式 對比printf printf 格式控制字串 變數列表 scanf 格式控制字串 變數的 位址 列表 printf ...