當前位置:首頁 » 編程語言 » c語言reg
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言reg

發布時間: 2022-07-17 06:28:33

A. c語言如何導出注冊表REG_NONE鍵的值

regedit 的命令行參數

filename 導入 .reg 文件進注冊表
/s 導入 .reg 文件進注冊表(安靜模式)
/e 導出注冊表文件
例:regedit /e filename.reg HKEY_LOCAL_MACHINE\SYSTEM
/L:system 指定 system.dat
/R:user 指定 user.dat
/C 壓縮 [文件名] (Windows 98)

REGEDIT[/L:system][/R:user]filename1
REGEDIT[/L:system][/R:user]/C filename2
REGEDIT[/L:system][/R:user]/E filename3 [regpath]

其中:
/L:system 指定system.dat文件的存放位置。
/R:user 指定user.dat文件的存放位置。
filename1 指定引入到注冊表資料庫的文件名。
/C filename2 指定形成注冊表資料庫的文件名。
/E filename3 指定導出注冊表文件的文件名。
regpath 指定導出注冊表文件的開始關鍵字(預設為全部關鍵字)

B. 如何在C語言中使用正則表達式

看到大家討論這方面的東西,作點貢獻聊表各位高手對這個版快的無私奉獻 :oops:

如果用戶熟悉Linux下的sed、awk、grep或vi,那麼對正則表達式這一概念肯定不會陌生。由於它可以極大地簡化處理字元串時的復雜
度,因此現在已經在許多Linux實用工具中得到了應用。千萬不要以為正則表達式只是Perl、Python、Bash等腳本語言的專利,作為C語言程序
員,用戶同樣可以在自己的程序中運用正則表達式。

標準的C和C++都不支持正則表達式,但有一些函數庫可以輔助C/C++程序員完成這一功能,其中最著名的當數Philip Hazel的Perl-Compatible Regular Expression庫,許多Linux發行版本都帶有這個函數庫。

編譯正則表達式

為了提高效率,在將一個字元串與正則表達式進行比較之前,首先要用regcomp()函數對它進行編譯,將其轉化為regex_t結構:

int regcomp(regex_t *preg, const char *regex, int cflags);

參數regex是一個字元串,它代表將要被編譯的正則表達式;參數preg指向一個聲明為regex_t的數據結構,用來保存編譯結果;參數cflags決定了正則表達式該如何被處理的細節。

如果函數regcomp()執行成功,並且編譯結果被正確填充到preg中後,函數將返回0,任何其它的返回結果都代表有某種錯誤產生。

匹配正則表達式

一旦用regcomp()函數成功地編譯了正則表達式,接下來就可以調用regexec()函數完成模式匹配:

int regexec(const regex_t *preg, const char *string, size_t nmatch,regmatch_t pmatch[], int eflags);
typedef struct {
regoff_t rm_so;
regoff_t rm_eo;
} regmatch_t;

參數preg指向編譯後的正則表達式,參數string是將要進行匹配的字元串,而參數nmatch和pmatch則用於把匹配結果返回給調用程序,最後一個參數eflags決定了匹配的細節。

在調用函數regexec()進行模式匹配的過程中,可能在字元串string中會有多處與給定的正則表達式相匹配,參數pmatch就是用來保
存這些匹配位置的,而參數nmatch則告訴函數regexec()最多可以把多少個匹配結果填充到pmatch數組中。當regexec()函數成功返
回時,從string+pmatch[0].rm_so到string+pmatch[0].rm_eo是第一個匹配的字元串,而從
string+pmatch[1].rm_so到string+pmatch[1].rm_eo,則是第二個匹配的字元串,依此類推。

釋放正則表達式

無論什麼時候,當不再需要已經編譯過的正則表達式時,都應該調用函數regfree()將其釋放,以免產生內存泄漏。

C. C語言如何使用正則表達式

using System.Text.RegularExpressions;
Regex reg = new Regex(@"你的正則表達式");
reg.IsMatch(@"返回Bool值,是否匹配");
reg.Match(@"返回一個匹配");
reg.Matches(@"返回所有匹配");

D. reg7=1在c語言中是什麼意思

printf("%d,%d,%d,%d",a,b,c,a++&&b++c++); 因為這一行同時出現了多個輸出項。在C語言中規定,在這種情況下,是從右往左進行掃描的。也就是說從右往左進行輸出的,但它的位置還是和正常的位置一樣。 這個語句中,因為是多輸出項,所以遵循從右往左的規則,先執行.a++&&b++c++,這個語句的結果是0,但後有++,自增,所以前面兩個變數就變成1了

E. C語言reg

Reg
對注冊表子項信息和注冊表項值中的值執行添加、更改、導入、導出以及其他操作。
語法
reg add KeyName [{/v ValueName | /ve}] [/t DataType] [/s Separator] [/d Data] [/f]
不過你問的好像不是這個~
0x00 是表示16進制 我認為就是個變數的定義

F. C語言怎麼用正則表達式

如何在C語言中巧用正則表達式

看到大家討論這方面的東西,作點貢獻聊表各位高手對這個版快的無私奉獻 :oops:

如果用戶熟悉Linux下的sed、awk、grep或vi,那麼對正則表達式這一概念肯定不會陌生。由於它可以極大地簡化處理字元串時的復雜
度,因此現在已經在許多Linux實用工具中得到了應用。千萬不要以為正則表達式只是Perl、Python、Bash等腳本語言的專利,作為C語言程序
員,用戶同樣可以在自己的程序中運用正則表達式。

標準的C和C++都不支持正則表達式,但有一些函數庫可以輔助C/C++程序員完成這一功能,其中最著名的當數Philip Hazel的Perl-Compatible Regular Expression庫,許多Linux發行版本都帶有這個函數庫。

編譯正則表達式

為了提高效率,在將一個字元串與正則表達式進行比較之前,首先要用regcomp()函數對它進行編譯,將其轉化為regex_t結構:

int regcomp(regex_t *preg, const char *regex, int cflags);

參數regex是一個字元串,它代表將要被編譯的正則表達式;參數preg指向一個聲明為regex_t的數據結構,用來保存編譯結果;參數cflags決定了正則表達式該如何被處理的細節。

如果函數regcomp()執行成功,並且編譯結果被正確填充到preg中後,函數將返回0,任何其它的返回結果都代表有某種錯誤產生。

匹配正則表達式

一旦用regcomp()函數成功地編譯了正則表達式,接下來就可以調用regexec()函數完成模式匹配:

int regexec(const regex_t *preg, const char *string, size_t nmatch,regmatch_t pmatch[], int eflags);
typedef struct {
regoff_t rm_so;
regoff_t rm_eo;
} regmatch_t;

參數preg指向編譯後的正則表達式,參數string是將要進行匹配的字元串,而參數nmatch和pmatch則用於把匹配結果返回給調用程序,最後一個參數eflags決定了匹配的細節。

在調用函數regexec()進行模式匹配的過程中,可能在字元串string中會有多處與給定的正則表達式相匹配,參數pmatch就是用來保
存這些匹配位置的,而參數nmatch則告訴函數regexec()最多可以把多少個匹配結果填充到pmatch數組中。當regexec()函數成功返
回時,從string+pmatch[0].rm_so到string+pmatch[0].rm_eo是第一個匹配的字元串,而從
string+pmatch[1].rm_so到string+pmatch[1].rm_eo,則是第二個匹配的字元串,依此類推。

釋放正則表達式

無論什麼時候,當不再需要已經編譯過的正則表達式時,都應該調用函數regfree()將其釋放,以免產生內存泄漏。

void regfree(regex_t *preg);

函數regfree()不會返回任何結果,它僅接收一個指向regex_t數據類型的指針,這是之前調用regcomp()函數所得到的編譯結果。

如果在程序中針對同一個regex_t結構調用了多次regcomp()函數,POSIX標准並沒有規定是否每次都必須調用regfree()函
數進行釋放,但建議每次調用regcomp()函數對正則表達式進行編譯後都調用一次regfree()函數,以盡早釋放佔用的存儲空間。

報告錯誤信息

如果調用函數regcomp()或regexec()得到的是一個非0的返回值,則表明在對正則表達式的處理過程中出現了某種錯誤,此時可以通過調用函數regerror()得到詳細的錯誤信息。

size_t regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size);

參數errcode是來自函數regcomp()或regexec()的錯誤代碼,而參數preg則是由函數regcomp()得到的編譯結果,
其目的是把格式化消息所必須的上下文提供給regerror()函數。在執行函數regerror()時,將按照參數errbuf_size指明的最大字
節數,在errbuf緩沖區中填入格式化後的錯誤信息,同時返回錯誤信息的長度。

應用正則表達式

最後給出一個具體的實例,介紹如何在C語言程序中處理正則表達式。

#include <stdio.h>;
#include <sys/types.h>;
#include <regex.h>;

/* 取子串的函數 */
static char* substr(const char*str, unsigned start, unsigned end)
{
unsigned n = end - start;
static char stbuf[256];
strncpy(stbuf, str + start, n);
stbuf[n] = 0;
return stbuf;
}
/* 主程序 */
int main(int argc, char** argv)
{
char * pattern;
int x, z, lno = 0, cflags = 0;
char ebuf[128], lbuf[256];
regex_t reg;
regmatch_t pm[10];
const size_t nmatch = 10;
/* 編譯正則表達式*/
pattern = argv[1];
z = regcomp(®, pattern, cflags);
if (z != 0){
regerror(z, ®, ebuf, sizeof(ebuf));
fprintf(stderr, "%s: pattern '%s' \n", ebuf, pattern);
return 1;
}
/* 逐行處理輸入的數據 */
while(fgets(lbuf, sizeof(lbuf), stdin)) {
++lno;
if ((z = strlen(lbuf)) >; 0 && lbuf[z-1] == '\n')
lbuf[z - 1] = 0;
/* 對每一行應用正則表達式進行匹配 */
z = regexec(®, lbuf, nmatch, pm, 0);
if (z == REG_NOMATCH) continue;
else if (z != 0) {
regerror(z, ®, ebuf, sizeof(ebuf));
fprintf(stderr, "%s: regcom('%s')\n", ebuf, lbuf);
return 2;
}
/* 輸出處理結果 */
for (x = 0; x < nmatch && pm[x].rm_so != -1; ++ x) {
if (!x) printf("%04d: %s\n", lno, lbuf);
printf(" $%d='%s'\n", x, substr(lbuf, pm[x].rm_so, pm[x].rm_eo));
}
}
/* 釋放正則表達式 */
regfree(®);
return 0;
}

上述程序負責從命令行獲取正則表達式,然後將其運用於從標准輸入得到的每行數據,並列印出匹配結果。執行下面的命令可以編譯並執行該程序:

# gcc regexp.c -o regexp
# ./regexp 'regex[a-z]*' < regexp.c
0003: #include <regex.h>;
$0='regex'
0027: regex_t reg;
$0='regex'
0054: z = regexec(®, lbuf, nmatch, pm, 0);
$0='regexec'

小結

對那些需要進行復雜數據處理的程序來說,正則表達式無疑是一個非常有用的工具。本文重點在於闡述如何在C語言中利用正則表達式來簡化字元串處理,以便在數據處理方面能夠獲得與Perl語言類似的靈活性。

G. 簡述C語言程序的開頭#include<reg51.h>的作用

這語句意思是包含一個用於單片機開發的一種c語言)的頭文件
文件包含 是指一個文件將另外一個文件的內容全部包含進來。程序中包含reg51.h
文件的目的是為了要使用P1 (還有其他更多的符號)這個符號,即通知C 編譯器,程序中所寫的P1 是指80C51 單片機的P1 埠而不是其它變數。

H. 經常看見在單片機C語言中第一行是reg51.h,其中的reg是什麼意思

「reg51.h」是一些編譯軟體自帶的MCS-51單片機特殊功能寄存器聲明文件,這個頭文件中包含了對P0~P3 I/O口、中斷系統等幾乎內部所有特殊功能寄存器進行了聲明,其文件名「reg51.h」中的「reg」就是英文「register」(寄存器)的縮寫。對特殊功能寄存器進行聲明後,編寫程序時就不需要使用難以記憶的寄存器地址來對寄存器進行操作了,每個寄存器都被聲明了特定的名字,通過人類容易記憶的名稱來編程更加方便。

I. C語言中,#define select_16bit_reg(reg) (* (unsigned int *)LCD_CMD_ADD) = (reg) ,是什麼意思

就說第一個:
首先,這個是一個宏的寫法說明這個是一個宏的定義;
其次,分析這個宏的的功能就是用select_16bit_reg(reg) 代替(* (unsigned int *)LCD_CMD_ADD) = (reg)這個寫法;
最後,這個宏的作用就是,把參數的值賦給LCD_CMD_ADD(LCD_CMD_ADD本身可能就是一個常量,無上下文不好做分析而且沒有見過這個東東),至於前面的(* (unsigned int *) 便是類型的轉換,先轉換成unsigned int *類型 然後前面那個是一個指針符,表示LCD_CMD_ADD指向。
希望你能看懂這個說明