1. 程式人生 > >關於一段while(1)改為do{}while(...);程式碼

關於一段while(1)改為do{}while(...);程式碼

首先宣告一下,寫這篇文章沒有什麼目的,只是確實太過碰巧,為什麼?

本社群有一段《關於do{}while()的程式碼PK》(地址就不提供了,相信很多人也看過,自己搜尋一下吧)的討論,看後我覺得很搞笑,就一個小問題,大夥的討論還很積極的;雖說本人對一些意見不敢苟同,但工作重要,就簡單評論了一下,然後繼續工作;

很快工作要實現一個在windows自動啟動應用程式,相信很多人就會想到寫登錄檔,沒錯,我找到下面這段程式碼:

/******************  
  char     *     strRegName[5]     ={"SOFTWARE","Microsoft","Windows","CurrentVersion","Run"};    
  HKEY                 hKey     =     HKEY_LOCAL_MACHINE;    
  HKEY                 hSubKey;    
  int                   indx     =     0;    
  long                 lRC;    
  char                 svBuffer[256];    
  char                 strFileName[]     =     "YourProgram.Exe";    
  DWORD               dwSize     =     256;    
  BOOL                 bReg     =     FALSE;    
  while(1)    
  {    
                  lRC     =     RegOpenKeyEx(hKey,     strRegName[indx],     0,    
                                  KEY_READ     |     KEY_WRITE,     &hSubKey)     ;    
                  if(lRC     !=     ERROR_SUCCESS)    
                  {    
                                  RegCloseKey(hKey);    
                                  return     -1;    
                  }    
                  hKey     =     hSubKey;    
                  indx++;    
                  if     (indx     >=     5)    
                                  break;    
  }  

 
  lRC     =     RegQueryValueEx(hKey,     "YourProgram",     NULL,     NULL,    
                                                  (BYTE     *)svBuffer,     &dwSize);    
  if     (lRC     !=     ERROR_SUCCESS)    
  {    
                  lRC     =     RegSetValueEx     (hKey,     "YourProgram",     0,     REG_SZ,    
                                                                  (BYTE     *)strFileName,strlen(strFileName));    
                  bReg     =     FALSE;    
  }    
  else    
                  bReg     =     TRUE;    

第一感覺我就覺得這個while (1)在這裡,怎麼看就怎麼彆扭,就簡單改了一下,程式碼如下:

    do   
    {  
 
        lRC     =     RegOpenKeyEx(hKey,     strRegName[indx],     0,   
            KEY_READ     |     KEY_WRITE,     &hSubKey)     ;   
        if(lRC     !=     ERROR_SUCCESS)   
        {   
            RegCloseKey(hKey);   
            return     -1;   
        }   
        hKey     =     hSubKey;   
    } while (++indx < 5);


 

因為是別人的程式碼,功能單一,也就懶得去做什麼優化,總體改了之後減少了幾行程式碼,而且個人覺得更直觀,好理解

這就是整個的經過,哈哈!

再次宣告一下,寫本篇文章沒有什麼想法,有的也是覺得好玩,大家或許可以學習一下如果實現自動執行應用程式該功能。

相關推薦

關於while(1)do{}while(...);程式碼

首先宣告一下,寫這篇文章沒有什麼目的,只是確實太過碰巧,為什麼? 本社群有一段《關於do{}while()的程式碼PK》(地址就不提供了,相信很多人也看過,自己搜尋一下吧)的討論,看後我覺得很搞笑,就一個小問題,大夥的討論還很積極的;雖說本人對一些意見不敢苟同,但工作重要,就

編號格式“圖.1“圖1.1”編號以阿拉伯數字顯示

應對 tro 而不是 mil mat baidu 刪掉 引用 按順序 首先完成圖目錄,參考:https://jingyan.baidu.com/article/4d58d541ca01aa9dd4e9c0fe.html 本文適用於用Word寫學位論文。 學位論文大

while循環與do while循環

語法 循環條件 使用 簡潔 動作 循環結構 就是 一次 什麽 1.while循環就是把代碼中重復的動作寫成更簡潔,直觀的語句。 2.do while根據字面意思就是先做再循環。 相同點: ①都是循環結構,使用“while(循環條件)”表示循環條件,使用大括號將循環操作括起來

php.ini 將cgi.fix_pathinfo=1這一行去掉註釋將10的用意

舉例來說,開啟的危害就是假設你的網站有http://xx.com/a.jpg這樣的一張圖片,我通過http://xx.com/a.jpg/foo.php就可以檢視到這個檔案的二進位制內容,意思就是可以通過php來執行它.問題就來了,如果你的網站允許使用者上傳圖片,那麼使用者就可以構造一些惡意的程式碼

演算法32--求出給定陣列中某連續區間之和某值的起始索引

給定一個數組以及一個目標數,求陣列中一段連續的區間使得該區間元素之和為目標數。 例如num=[1,2,3,4,5] target=10  結果返回[0,3] 解法一:遍歷所有情況  時間複雜度N2 def getSumIndex2(num=[1,2,3,4,5,6,7

判斷文字具體長度多少px

文字中由文字,有英文大小寫,有數字還有各種符號。這時如果要用js判斷它的長度為多少px。 1.獲取字串  str 2.將str拆成陣列arr 3.遍歷arr,分別求出中文個數,大寫英文個數,小寫英文個數....... 4.根據設定的字型大小,求出每種型別字元分別為多少px(直接輸入文字,在網

While 迴圈語句 和do while迴圈語句

While迴圈語句的格式 while(迴圈條件){ } 如果迴圈條件的值為true,那麼就執行大括號裡面的內容,否則不執行大括號裡面的內容(如果大括號外面還有內容的話就直接執行大括號外面的內容) 注意:迴圈條件後面不能加分號,不然程式會進入死迴圈 編寫個1加到5

演算法--求出給定陣列中某連續區間之和某值的起始索引

給定一個數組以及一個目標數,求陣列中一段連續的區間使得該區間元素之和為目標數。 例如num=[1,2,3,4,5] target=10  結果返回[0,3] 解法一:遍歷所有情況  時間複雜度N2 def getSumIndex2(num=[1,2,3,4,5,6,7,

C# while、for、do-while 迴圈

迴圈,一般可以形容在特定條件中,持續重複同一件事情 在程式設計過程,時常會運用迴圈來進行計算或取資料 在這裡,會介紹幾種迴圈 while、for、do-while

C++上機報告 分別用3種迴圈(while~、for(;;)~、do~while)計算下式

上機內容:分別用3種迴圈(while~、for(;;)~、do~while)計算下式 上機目的:熟悉3種迴圈結構(while,for(;;),do while) 我的程式: /* * 程式的版權和版本宣告部分: * Copyright (c) 2011, 煙

將Windows網絡適配器共享網絡的ip:192.168.137.1 其他IP

emp off 關閉 control hosted temp services input 註意 修改註冊表 方法1 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters

重構基於原生JavaScript的表格繪製程式碼

為了在CardSimulate專案中方便的顯示技能和效果列表,決定重構以前編寫的一段JavaScript程式碼——att表格繪製庫,這段程式碼的作用是將特定的JavaScript資料物件轉化為表格,支援精細的樣式設定和一些複雜報表功能並且提供了自由的擴充套件性。可以用較新的Chrome瀏覽器訪問https:/

比較好的生成自動摘要程式碼

#!/user/bin/python # coding:utf-8 import nltk import numpy import jieba import codecs import os class SummaryTxt: def __init__(self,

實現網站倒轉特效的javascript程式碼

簡介 之前 一直有人惱火我的網站雙擊會變成黑白,然後文字顛倒,其實實現這個很簡單,把下面這段程式碼放到你的網站首頁即可 程式碼

簡單的關於字串的 Java 程式碼竟考察了這麼多東西

下面的程式碼執行結果是什麼?解釋一下為什麼會有這些差異。 String s1 = "hello";String s2 = s1 + ",world";String s3 = "hello" + ",world";String s4 = "hello,world";String s5 = new String

什麽使用do{}while(0)?

cocos2d else cocos sni 語句 解決問題 問題: 替換 pan 近期學習Cocos2d-x,看到不少使用do{}while(0)的宏定義,如: #define CC_SAFE_DELETE(p) do { delete (p

JavaSE7基礎 找到維數組中指定數值(第一次出現)的索引值 do-while循環實現

學習資源 public 不可用 oid 索引 ati 精華 args 運行 版本參數:jdk-7u72-windows-i586註意事項:博文內容僅供參考,不可用於其他用途。 代碼 class Demo{ public static void main(Stri

do-while是如何控制指針+1的呢

tar vfs while bdb AR LG http .com do-while exrkllgpj8股員兔南攬裂謚烏拇牡《http://weibo.com/p/230927988015350870183936》 xlfja1b9m4諏惺倮屑掌瀉坎灼懦謚《http:/

java基礎第十while迴圈和do...while迴圈

1、while 語法: while(判斷條件){ 迴圈操作 }; 執行過程: < 1 >、 判斷 while 後面的條件是否成立( true / false ) < 2 >、 當條件成立時,執行迴圈內的

java基礎() for / while / do...while迴圈語句

開始學習jva基礎,做此筆記 三種迴圈的區別: 對於知道明確區間的需求,比如輸出1-10之間的奇數使用for迴圈 不明確區間的使用while 使用for迴圈,迴圈一結束變數就停止佔用記憶體 初始化變數如果在迴圈外還需要用建議用while do while迴