1. 程式人生 > >C語言程式碼分享之字串匹配及檔案讀寫結合

C語言程式碼分享之字串匹配及檔案讀寫結合

這個程式碼功能是:有一個密碼驗證功能(這裡沒有做回顯操作,即用*代替輸入的內容),驗證通過後從執行的引數個數來判定要輸出的內容,如果引數是程式本身,則輸出文本里面的命令內容,如果引數帶了,那麼則與文字內容匹配,如果匹配成功,則執行這個命令,如果不成功則輸出沒有找到該命令。

直接上程式碼了:

/*
 * =====================================================================================
 *
 *       Filename:  main.cpp
 *
 *    Description:  
 *
 *        Version:  1.0
 *        Created:  03/12/2013 05:44:05 PM
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  BackGarden_Straw.Neo (BackGarden_Straw), 20
[email protected]
* Organization: BackGarden_Straw * * ===================================================================================== */ //define the header file #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> //define the marco var #define SIZE 1024 int main(int argc, const char *argv[]){ //input the test login in executable program. char Password[] = {"test"}; char LoginPassword[16]; do { printf("please input password to login:"); scanf("%s",LoginPassword); //printf("1=%d,2=%d,3=%d\n",strcmp(Password,LoginPassword),strlen(Password),strlen(LoginPassword)); //printf("1=%d,2=%d,3=%d\n",strcmp(Password,LoginPassword),strlen(Password),strlen(LoginPassword)); if ( (strcmp(Password,LoginPassword) == 0) && (strlen(Password) == strlen(LoginPassword))){ printf("Enjoy it!\n"); break; }else{ printf("your password can't login.\n"); exit(0); } } while (1); //do what after login FILE *source; const char CommandPath[] = {"command.txt"}; char Buffer[SIZE]; int status = 0; if (!(source = fopen(CommandPath,"r"))){ printf("command file can't read or not exist.\n"); exit(1); } //List the commands or execute the command if (argc < 2){ //List the commands printf("Command List:\n"); while (fgets(Buffer,sizeof(Buffer),source)){ printf("%s",Buffer); } }else{ //Check the command while (fgets(Buffer,sizeof(Buffer),source)){ if (strncmp(argv[1],Buffer,strlen(Buffer)-1) == 0){ //這裡之所以要將長度-1,是因為後面還多了一個 \n 如果直接strcmp()進行對比得出來的將是 \n 的ASCII值10 printf("find the command.\n"); status = 1; //send the command to services char ReceiveCommand[SIZE]; int i = 0; for (i = 1; i < argc; i++){ strcat(ReceiveCommand,argv[i]); strcat(ReceiveCommand," "); } printf("the command is:%s\n",ReceiveCommand); break; }else{ continue; } } if (status == 0){ printf("sorry,can't find your command\n"); } } //close the command file if (fclose(source)){ printf("Error in close file"); exit(1); } return 0; }

程式碼量不大,註釋就不多寫了。

ps:執行時需要在同級目錄下有一個command.txt

相關推薦

C語言程式碼分享字串匹配檔案結合

這個程式碼功能是:有一個密碼驗證功能(這裡沒有做回顯操作,即用*代替輸入的內容),驗證通過後從執行的引數個數來判定要輸出的內容,如果引數是程式本身,則輸出文本里面的命令內容,如果引數帶了,那麼則與文字內容匹配,如果匹配成功,則執行這個命令,如果不成功則輸出沒有找到該命令。

C語言程式碼1(素數判斷優化)

//素數判斷優化 #include<stdio.h> #include<math.h> int main() {int n=0, i=0, count=0;for(n=101; n<200; n=n+2){for(i=2; i<sqrt(n); i++){if( n%i==

c 語言實現24位bmp圖片載入,,放大縮小 .

發現好多人網上查詢c 語言版本的bmp影象讀取,儲存,放大,縮小程式,很難找到完整的。 現在將自己寫的貼出來 供大家學習參考交流。轉載請標明出處,尊重作者勞動成果。 /**********************************************************            

node——1-node 的初始化 檔案

node 初始化(helloworld) 新建 helloworld.js 檔案,內容如下: var foo = 'hello world!'; console.log(foo); // 在 node 中,採用 EcmaScript 進行編碼 // 沒有 BOM、DOM,和瀏覽

opencv學習(十七)XML和YAML檔案操作

可能大部分人到現在接觸的XML和YAML檔案很少,等以後訓練人臉模型進行人臉識別的時候用的就多了。現在先了解一下這兩種檔案型別。 XML:Extensible Markup Language,可擴充套件標記語言,標準通用語言的子集,是一種用於標記電子檔案使其具

python關於csv的檔案記錄

相關配置: Anaconda 4.2.0 (64-bit) Python 3.5.2 關於csv檔案讀寫練習小系統。 程式如下: import csv import time import sys filename = 'ha.csv' datas = [['he

Linux編寫核心模組檔案

sysfs是什麼sysfs是一個基於記憶體的檔案系統,它的作用是將核心資訊以檔案的方式提供給使用者程式使用。該檔案系統的目錄層次結構嚴格按照核心的資料結構組織。除了二進位制檔案外(只有特殊場合才使用),sysfs檔案內容均以ASCII格式儲存,且一個檔案只儲存一個數據,另外,

iOS --- 關於SandBox機制檔案的幾種方式

iOS中的SandBox(沙盒)機制是一種安全體系,它規定了APP只能在為該APP建立的資料夾內讀取檔案,不可以訪問其他地方的內容。所有的非程式碼檔案都儲存在這個地方,比如圖片、聲音、屬性列表和文字檔案等。即: 每個應用程式都在自己的沙盒內 不能隨意跨越自己

C語言判斷迴文字串程式碼解析

輸入一個字串,判斷其是否為迴文。 所謂迴文字串,是指從左到右讀和從右到左讀完全相同的字串。 主要涉及知識點:字元陣列的輸入輸出,及相應的處理。 這個問題,可以從字串的兩頭開始比較,即第1個字元和倒數第1個字元比較,第2個字元和倒數第2個字元比較,以此類推...如果出現字元不相等的情況,說明不是迴文,如果

C語言】統計一個字串中字母、數字、空格其它字元的數量

統計一個字串中字母、數字、空格及其它字元的數量 解法1: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> void Count(con

golang呼叫C語言程式碼

此篇教程只是簡單的描述怎麼使用以及遇到的一些錯誤 我寫的例項,C語言與golang在同一個檔案中,並沒有分開。 我這裡演示兩個例子:⑴ 呼叫C語言函式列印“Hello World” 1 #include <stdio.h> 2 void PrintHello(){ 3 printf

稀疏矩陣的儲存方法(3種)C語言程式碼實現

稀疏矩陣,即含有少量非 0 元素的矩陣,如圖 1 所示:   圖 1 稀疏矩陣    該矩陣中非 0 元素的數量比較少,與其使用普通方式將矩陣中的所有資料元素一一儲存,不如只儲存非 0 元素更節省記憶體空間,拿圖 1 中矩陣來說,只需儲存元素 3、4、5 即可(此類儲存方式被稱為稀疏矩陣的壓縮儲存)。

C語言學習應用筆記七:C語言中的回撥函式使用方式

  我們在使用C語言實現相對複雜的軟體開發時,經常會碰到使用回撥函式的問題。但是回撥函式的理解和使用卻不是一件簡單的事,在本篇我們根據我們個人的理解和應用經驗對回撥函式做簡要的分析。 1、什麼是回撥函式   既然談到了回撥函式,首先我們就要搞清楚什麼是回撥函式。在討論回撥函式之前,我們需要說明另一個概念,

矩陣加法(基於十字連結串列)C語言程式碼實現

矩陣之間能夠進行加法運算的前提條件是:各矩陣的行數和列數必須相等。 在行數和列數都相等的情況下,矩陣相加的結果就是矩陣中對應位置的值相加所組成的矩陣,例如: 圖1 矩陣相加 十字連結串列法 之前所介紹的都是採用順序儲存結構儲存三元組,在類似於矩陣的加法運算中,矩陣中的資料元素變化較大(這裡的變化主

廣義表的複製C語言程式碼實現

對於任意一個非空廣義表來說,都是由兩部分組成:表頭和表尾。反之,只要確定的一個廣義表的表頭和表尾,那麼這個廣義表就可以唯一確定下來。 複製一個廣義表,也是不斷的複製表頭和表尾的過程。如果表頭或者表尾同樣是一個廣義表,依舊複製其表頭和表尾。 所以,複製廣義表的過程,其實就是不斷的遞迴,複製廣義表中表頭和表尾

B樹——思路、C語言程式碼的實現

1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<time.h> 5 #define BTREEL

B-樹的插入、查詢、刪除 可執行的C語言程式碼

 前面討論的查詢都是內查詢演算法,被查詢的資料都在記憶體。當查詢的資料放在外存,用平衡二叉樹作磁碟檔案的索引組織時,若以結點為內外存交換的單位,則找到需要的關鍵字之前,平均要進行lgn次磁碟讀操作,而磁碟、光碟的讀寫時間要比隨機存取的記憶體代價大得多。其二,外存的存取是以“

C語言進階路------字串的反序輸出(輸入字串然後呼叫函式反序輸出)

#include<stdio.h> #include<string.h> int main() {void fanxu(char x[]);char a[80];scanf("%s",a);fanxu(a);printf("%s\n",a);retu

排序演算法歸併排序及其C語言程式碼實現

概述:額,還是舉個栗子吧: 初始序列[ 98 , 1 , 23 , 4 , 2 , 9 , 8 , 18] //第一步[ 98 | 1 | 23 | 4 | 2 | 9 | 8 | 18] //

排序演算法插入排序及其C語言程式碼實現

概述 一個插入排序是另一種簡單排序,它的思路是:每次從未排好的序列中選出第一個元素插入到已排好的序列中。它的演算法步驟可以大致歸納如下: 1. 從未排好的序列中拿出首元素,並把它賦值給temp變數; 2. 從排好的序列中,依次與temp進行比較,如果元素比temp大,則將元素