2025
01
18
2012
05
27
「プログラマにお使いを頼んだら……」(C言語)
「プログラマにお使いを頼んだら……」のジョーク内のプログラマーの思考をC言語で書いてみた。
ジョーク概要
“Could you please go shopping for me and buy one carton of milk, and if they have eggs, get 6!” ある妻がプログラマの夫に「買い物にいって牛乳を1つ買ってきてちょうだい。卵があったら6つお願い」と言った。 A short time later the husband comes back with 6 cartons of milk. 夫はしばらくして、牛乳を6パック買ってきた。 The wife asks him, “Why the hell did you buy 6 cartons of milk?” 妻は聞いた「なんで牛乳を6パックも買ってきたのよ!」 He replied, “They had eggs.” 夫いわく「だって、卵があったから……」
gyunyu.c
/* gyunyu.c */ #include <stdio.h> #define EXIST 1 #define NOEXIST 0 int main(void) { int buy_milk = 1; if (is_eggs_exist()) { buy_milk = 6; } printf("Buy %d carton of milk.\n", buy_milk); return 0; } int is_eggs_exist() { return EXIST; }
コンパイルと実行結果
gcc -w -Wall gyunyu gyunyu.c ./gyunyu Buy 6 carton of milk.
検索用タグ C言語
PR
2012/05/27 (Sun.) Comment(0) C言語
2012
04
24
設定ファイルから特定パラメータを文字列で取得(C言語)
設定ファイルから設定を読み込むのに使います。
ソースコード
/* get_param.c */ #include <stdio.h> #include <string.h> #define STR_MAX 256 #define CONFIG_FILE "config.txt" void usage(void) { printf("usage: ./get_param [parameter_name]\n"); } int main(int argc, char *argv[]) { int i = 0, j = 0; char str[STR_MAX], param[STR_MAX]; FILE *fin; if (argc < 2) { usage(); return -2; /* operation miss */ } if ((fin = fopen(CONFIG_FILE, "r")) == NULL) { printf("fin error:[%s]\n", CONFIG_FILE); return -1; /* system error */ } for(;;) { if (fgets(str, STR_MAX, fin) == NULL) { /* EOF */ fclose(fin); return -3; /* not found keyword */ } if (!strncmp(str, argv[1], strlen(argv[1]))) { while (str[i++] != '=') { ; } while (str[i] != '\n') { param[j++] = str[i++]; } param[j] = '\0'; printf("param:[%s]\n", param); fclose(fin); return 0; } } fclose(fin); return -1; /* not reachable */ }
コンパイル例
gcc -Wall -o get_param get_param.c
使い方
./get_param [parametor_name]
使用例
# config.txt 中身 IP=192.168.1.14 PORT=11104 SDI_IN=enable ・ ・ ・
実行
nex2t@nex2t-svr$ ./get_param IP /home/nex2t param:[192.168.1.14] nex2t@nex2t-svr$ ./get_param PORT /home/nex2t param:[11104] nex2t@nex2t-svr$ ./get_param SDI_IN /home/nex2t param:[enable]
検索用タグ C言語
2012/04/24 (Tue.) Comment(0) C言語
2012
04
23
行頭と行末に特定ワードを付け加えるプログラム(C言語)
レジスタダンプするのに使いました。
ソースコード
/* head_tail_add.c */ #include <stdio.h> #include <string.h> #define STR_MAX 256 #define OUTPUT_FILE "output_head_tail.txt" void usage(void) { printf("usage: ./head_tail_add [input_file] [head_add] [tail_add]\n"); printf("result: %s\n", OUTPUT_FILE); } int main(int argc, char *argv[]) { int len; char str[STR_MAX], output_str[STR_MAX], add_tail[STR_MAX]; FILE *fin, *fout; if (argc < 4) { usage(); return 1; } if ((fin = fopen(argv[1], "r")) == NULL) { printf("fin error:[%s]\n", argv[1]); return -1; } if ((fout = fopen(OUTPUT_FILE, "w")) == NULL) { printf("fout error:[%s]\n", OUTPUT_FILE); fclose(fin); return -1; } /* adjustment */ strcpy(add_tail, argv[3]); len = strlen(add_tail); add_tail[len] = '\n'; add_tail[len+1] = '\0'; for(;;) { if (fgets(str, STR_MAX, fin) == NULL) { break; /* EOF */ } sprintf(output_str, "%s%s", argv[2], str); len = strlen(output_str); output_str[len-1] = '\0'; strcat(output_str, add_tail); fputs(output_str, fout); } fclose(fin); fclose(fout); return 0; }
コンパイル例
gcc -Wall -o head_tail_add head_tail_add.c
使い方
./head_tail_add [input_file] [head_add] [tail_add]
実際の使用例
レジスタのアドレスが書いてあるファイルからawkなど使い次のように加工した ファイルに対し、
(e1000eドライバ regs.hより) E1000_CTRL E1000_CTRL_DUP E1000_STATUS E1000_EECD E1000_EERD E1000_CTRL_EXT E1000_FLA E1000_MDIC E1000_SCTL E1000_FCAL E1000_FCAH E1000_FEXT E1000_FEXTNVM4 E1000_FEXTNVM E1000_FCT E1000_CONNSW E1000_VET E1000_ICR E1000_ITR E1000_ICS E1000_IMS E1000_IMC E1000_IAM E1000_IVAR E1000_SVCR E1000_SVT E1000_RCTL E1000_FCTTV E1000_TXCW E1000_RXCW E1000_PBA_ECC E1000_TCTL E1000_TCTL_EXT E1000_TIPG E1000_TBT E1000_AIT E1000_LEDCTL E1000_EXTCNF_CTRL E1000_EXTCNF_SIZE E1000_PHY_CTRL E1000_POEMB E1000_PBA E1000_PBS E1000_EEMNGCTL E1000_EEARBC E1000_FLASHT E1000_EEWR E1000_FLSWCTL E1000_FLSWDATA E1000_FLSWCNT E1000_FLOP E1000_I2CCMD E1000_I2CPARAMS E1000_WDSTP E1000_SWDSTS E1000_FRTIMER E1000_ERT E1000_FCRTL E1000_FCRTH E1000_PSRCTL E1000_PBRTH E1000_FCRTV E1000_RDPUMB E1000_RDPUAD E1000_RDPUWD E1000_RDPURD E1000_RDPUCTL E1000_RDTR E1000_RADV E1000_RSRPD E1000_TDFPC E1000_TDPUMB E1000_TDPUAD E1000_TDPUWD E1000_TDPURD E1000_TDPUCTL E1000_DTXCTL E1000_TIDV E1000_TADV E1000_TSPMT E1000_CRCERRS E1000_ALGNERRC E1000_SYMERRS E1000_RXERRC E1000_MPC E1000_SCC E1000_ECOL E1000_MCC E1000_LATECOL E1000_COLC E1000_DC E1000_TNCRS E1000_SEC E1000_CEXTERR E1000_RLEC E1000_XONRXC E1000_XONTXC E1000_XOFFRXC E1000_XOFFTXC E1000_FCRUC E1000_PRC64 E1000_PRC127 E1000_PRC255 E1000_PRC511 E1000_PRC1023 E1000_PRC1522 E1000_GPRC E1000_BPRC E1000_MPRC E1000_GPTC E1000_GORCL E1000_GORCH E1000_GOTCL E1000_GOTCH E1000_RNBC E1000_RUC E1000_RFC E1000_ROC E1000_RJC E1000_MGTPRC E1000_MGTPDC E1000_MGTPTC E1000_TORL E1000_TORH E1000_TOTL E1000_TOTH E1000_TPR E1000_TPT E1000_PTC64 E1000_PTC127 E1000_PTC255 E1000_PTC511 E1000_PTC1023 E1000_PTC1522 E1000_MPTC E1000_BPTC E1000_TSCTC E1000_TSCTFC E1000_IAC E1000_ICRXPTC E1000_ICRXATC E1000_ICTXPTC E1000_ICTXATC E1000_ICTXQEC E1000_ICTXQMTC E1000_ICRXDMTC E1000_ICRXOC E1000_CRC_OFFSET E1000_PCS_CFG0 E1000_PCS_LCTL E1000_PCS_LSTAT E1000_CBTMPC E1000_HTDPMC E1000_CBRDPC E1000_CBRMPC E1000_RPTHC E1000_HGPTC E1000_HTCBDPC E1000_HGORCL E1000_HGORCH E1000_HGOTCL E1000_HGOTCH E1000_LENERRS E1000_SCVPC E1000_HRMPC E1000_PCS_ANADV E1000_PCS_LPAB E1000_PCS_NPTX E1000_PCS_LPABNP E1000_1GSTAT_RCV E1000_RXCSUM E1000_RLPML E1000_RFCTL E1000_MTA E1000_RA E1000_VFTA E1000_VT_CTL E1000_CIAA E1000_CIAD E1000_VFQA0 E1000_VFQA1 E1000_WUC E1000_WUFC E1000_WUS E1000_MANC E1000_IPAV E1000_IP4AT E1000_IP6AT E1000_WUPL E1000_WUPM E1000_PBACL E1000_FFLT E1000_HOST_IF E1000_FFMT E1000_FFVT E1000_KMRNCTRLSTA E1000_MDPHYA E1000_MANC2H E1000_SW_FW_SYNC E1000_CCMCTL E1000_GIOCTL E1000_SCCTL E1000_GCR E1000_GCR2 E1000_GSCL_1 E1000_GSCL_2 E1000_GSCL_3 E1000_GSCL_4 E1000_FACTPS E1000_SWSM E1000_FWSM E1000_SWSM2 E1000_DCA_ID E1000_DCA_CTRL E1000_FFLT_DBG E1000_HICR E1000_CPUVEC E1000_RSSIR E1000_TSYNCRXCTL E1000_TSYNCTXCTL E1000_TSYNCRXCFG E1000_RXSTMPL E1000_RXSTMPH E1000_RXSATRL E1000_RXSATRH E1000_TXSTMPL E1000_TXSTMPH E1000_SYSTIML E1000_SYSTIMH E1000_TIMINCA E1000_RXMTRL E1000_RXUDP
このファイルに対し、プログラムを実行してみる。
./head_tail_add before 'printk("0x%04x:%04x\n", ' ', tmp);'
結果次のようになる。
printk("0x%04x:%04x\n", E1000_CTRL, tmp); printk("0x%04x:%04x\n", E1000_CTRL_DUP, tmp); printk("0x%04x:%04x\n", E1000_STATUS, tmp); printk("0x%04x:%04x\n", E1000_EECD, tmp); printk("0x%04x:%04x\n", E1000_EERD, tmp); printk("0x%04x:%04x\n", E1000_CTRL_EXT, tmp); printk("0x%04x:%04x\n", E1000_FLA, tmp); printk("0x%04x:%04x\n", E1000_MDIC, tmp); printk("0x%04x:%04x\n", E1000_SCTL, tmp); printk("0x%04x:%04x\n", E1000_FCAL, tmp); printk("0x%04x:%04x\n", E1000_FCAH, tmp); printk("0x%04x:%04x\n", E1000_FEXT, tmp); printk("0x%04x:%04x\n", E1000_FEXTNVM4, tmp); printk("0x%04x:%04x\n", E1000_FEXTNVM, tmp); printk("0x%04x:%04x\n", E1000_FCT, tmp); printk("0x%04x:%04x\n", E1000_CONNSW, tmp); printk("0x%04x:%04x\n", E1000_VET, tmp); printk("0x%04x:%04x\n", E1000_ICR, tmp); printk("0x%04x:%04x\n", E1000_ITR, tmp); printk("0x%04x:%04x\n", E1000_ICS, tmp); printk("0x%04x:%04x\n", E1000_IMS, tmp); printk("0x%04x:%04x\n", E1000_IMC, tmp); printk("0x%04x:%04x\n", E1000_IAM, tmp); printk("0x%04x:%04x\n", E1000_IVAR, tmp); printk("0x%04x:%04x\n", E1000_SVCR, tmp); printk("0x%04x:%04x\n", E1000_SVT, tmp); printk("0x%04x:%04x\n", E1000_RCTL, tmp); printk("0x%04x:%04x\n", E1000_FCTTV, tmp); printk("0x%04x:%04x\n", E1000_TXCW, tmp); printk("0x%04x:%04x\n", E1000_RXCW, tmp); printk("0x%04x:%04x\n", E1000_PBA_ECC, tmp); printk("0x%04x:%04x\n", E1000_TCTL, tmp); printk("0x%04x:%04x\n", E1000_TCTL_EXT, tmp); printk("0x%04x:%04x\n", E1000_TIPG, tmp); printk("0x%04x:%04x\n", E1000_TBT, tmp); printk("0x%04x:%04x\n", E1000_AIT, tmp); printk("0x%04x:%04x\n", E1000_LEDCTL, tmp); printk("0x%04x:%04x\n", E1000_EXTCNF_CTRL, tmp); printk("0x%04x:%04x\n", E1000_EXTCNF_SIZE, tmp); printk("0x%04x:%04x\n", E1000_PHY_CTRL, tmp); printk("0x%04x:%04x\n", E1000_POEMB, tmp); printk("0x%04x:%04x\n", E1000_PBA, tmp); printk("0x%04x:%04x\n", E1000_PBS, tmp); printk("0x%04x:%04x\n", E1000_EEMNGCTL, tmp); printk("0x%04x:%04x\n", E1000_EEARBC, tmp); printk("0x%04x:%04x\n", E1000_FLASHT, tmp); printk("0x%04x:%04x\n", E1000_EEWR, tmp); printk("0x%04x:%04x\n", E1000_FLSWCTL, tmp); printk("0x%04x:%04x\n", E1000_FLSWDATA, tmp); printk("0x%04x:%04x\n", E1000_FLSWCNT, tmp); printk("0x%04x:%04x\n", E1000_FLOP, tmp); printk("0x%04x:%04x\n", E1000_I2CCMD, tmp); printk("0x%04x:%04x\n", E1000_I2CPARAMS, tmp); printk("0x%04x:%04x\n", E1000_WDSTP, tmp); printk("0x%04x:%04x\n", E1000_SWDSTS, tmp); printk("0x%04x:%04x\n", E1000_FRTIMER, tmp); printk("0x%04x:%04x\n", E1000_ERT, tmp); printk("0x%04x:%04x\n", E1000_FCRTL, tmp); printk("0x%04x:%04x\n", E1000_FCRTH, tmp); printk("0x%04x:%04x\n", E1000_PSRCTL, tmp); printk("0x%04x:%04x\n", E1000_PBRTH, tmp); printk("0x%04x:%04x\n", E1000_FCRTV, tmp); printk("0x%04x:%04x\n", E1000_RDPUMB, tmp); printk("0x%04x:%04x\n", E1000_RDPUAD, tmp); printk("0x%04x:%04x\n", E1000_RDPUWD, tmp); printk("0x%04x:%04x\n", E1000_RDPURD, tmp); printk("0x%04x:%04x\n", E1000_RDPUCTL, tmp); printk("0x%04x:%04x\n", E1000_RDTR, tmp); printk("0x%04x:%04x\n", E1000_RADV, tmp); printk("0x%04x:%04x\n", E1000_RSRPD, tmp); printk("0x%04x:%04x\n", E1000_TDFPC, tmp); printk("0x%04x:%04x\n", E1000_TDPUMB, tmp); printk("0x%04x:%04x\n", E1000_TDPUAD, tmp); printk("0x%04x:%04x\n", E1000_TDPUWD, tmp); printk("0x%04x:%04x\n", E1000_TDPURD, tmp); printk("0x%04x:%04x\n", E1000_TDPUCTL, tmp); printk("0x%04x:%04x\n", E1000_DTXCTL, tmp); printk("0x%04x:%04x\n", E1000_TIDV, tmp); printk("0x%04x:%04x\n", E1000_TADV, tmp); printk("0x%04x:%04x\n", E1000_TSPMT, tmp); printk("0x%04x:%04x\n", E1000_CRCERRS, tmp); printk("0x%04x:%04x\n", E1000_ALGNERRC, tmp); printk("0x%04x:%04x\n", E1000_SYMERRS, tmp); printk("0x%04x:%04x\n", E1000_RXERRC, tmp); printk("0x%04x:%04x\n", E1000_MPC, tmp); printk("0x%04x:%04x\n", E1000_SCC, tmp); printk("0x%04x:%04x\n", E1000_ECOL, tmp); printk("0x%04x:%04x\n", E1000_MCC, tmp); printk("0x%04x:%04x\n", E1000_LATECOL, tmp); printk("0x%04x:%04x\n", E1000_COLC, tmp); printk("0x%04x:%04x\n", E1000_DC, tmp); printk("0x%04x:%04x\n", E1000_TNCRS, tmp); printk("0x%04x:%04x\n", E1000_SEC, tmp); printk("0x%04x:%04x\n", E1000_CEXTERR, tmp); printk("0x%04x:%04x\n", E1000_RLEC, tmp); printk("0x%04x:%04x\n", E1000_XONRXC, tmp); printk("0x%04x:%04x\n", E1000_XONTXC, tmp); printk("0x%04x:%04x\n", E1000_XOFFRXC, tmp); printk("0x%04x:%04x\n", E1000_XOFFTXC, tmp); printk("0x%04x:%04x\n", E1000_FCRUC, tmp); printk("0x%04x:%04x\n", E1000_PRC64, tmp); printk("0x%04x:%04x\n", E1000_PRC127, tmp); printk("0x%04x:%04x\n", E1000_PRC255, tmp); printk("0x%04x:%04x\n", E1000_PRC511, tmp); printk("0x%04x:%04x\n", E1000_PRC1023, tmp); printk("0x%04x:%04x\n", E1000_PRC1522, tmp); printk("0x%04x:%04x\n", E1000_GPRC, tmp); printk("0x%04x:%04x\n", E1000_BPRC, tmp); printk("0x%04x:%04x\n", E1000_MPRC, tmp); printk("0x%04x:%04x\n", E1000_GPTC, tmp); printk("0x%04x:%04x\n", E1000_GORCL, tmp); printk("0x%04x:%04x\n", E1000_GORCH, tmp); printk("0x%04x:%04x\n", E1000_GOTCL, tmp); printk("0x%04x:%04x\n", E1000_GOTCH, tmp); printk("0x%04x:%04x\n", E1000_RNBC, tmp); printk("0x%04x:%04x\n", E1000_RUC, tmp); printk("0x%04x:%04x\n", E1000_RFC, tmp); printk("0x%04x:%04x\n", E1000_ROC, tmp); printk("0x%04x:%04x\n", E1000_RJC, tmp); printk("0x%04x:%04x\n", E1000_MGTPRC, tmp); printk("0x%04x:%04x\n", E1000_MGTPDC, tmp); printk("0x%04x:%04x\n", E1000_MGTPTC, tmp); printk("0x%04x:%04x\n", E1000_TORL, tmp); printk("0x%04x:%04x\n", E1000_TORH, tmp); printk("0x%04x:%04x\n", E1000_TOTL, tmp); printk("0x%04x:%04x\n", E1000_TOTH, tmp); printk("0x%04x:%04x\n", E1000_TPR, tmp); printk("0x%04x:%04x\n", E1000_TPT, tmp); printk("0x%04x:%04x\n", E1000_PTC64, tmp); printk("0x%04x:%04x\n", E1000_PTC127, tmp); printk("0x%04x:%04x\n", E1000_PTC255, tmp); printk("0x%04x:%04x\n", E1000_PTC511, tmp); printk("0x%04x:%04x\n", E1000_PTC1023, tmp); printk("0x%04x:%04x\n", E1000_PTC1522, tmp); printk("0x%04x:%04x\n", E1000_MPTC, tmp); printk("0x%04x:%04x\n", E1000_BPTC, tmp); printk("0x%04x:%04x\n", E1000_TSCTC, tmp); printk("0x%04x:%04x\n", E1000_TSCTFC, tmp); printk("0x%04x:%04x\n", E1000_IAC, tmp); printk("0x%04x:%04x\n", E1000_ICRXPTC, tmp); printk("0x%04x:%04x\n", E1000_ICRXATC, tmp); printk("0x%04x:%04x\n", E1000_ICTXPTC, tmp); printk("0x%04x:%04x\n", E1000_ICTXATC, tmp); printk("0x%04x:%04x\n", E1000_ICTXQEC, tmp); printk("0x%04x:%04x\n", E1000_ICTXQMTC, tmp); printk("0x%04x:%04x\n", E1000_ICRXDMTC, tmp); printk("0x%04x:%04x\n", E1000_ICRXOC, tmp); printk("0x%04x:%04x\n", E1000_CRC_OFFSET, tmp); printk("0x%04x:%04x\n", E1000_PCS_CFG0, tmp); printk("0x%04x:%04x\n", E1000_PCS_LCTL, tmp); printk("0x%04x:%04x\n", E1000_PCS_LSTAT, tmp); printk("0x%04x:%04x\n", E1000_CBTMPC, tmp); printk("0x%04x:%04x\n", E1000_HTDPMC, tmp); printk("0x%04x:%04x\n", E1000_CBRDPC, tmp); printk("0x%04x:%04x\n", E1000_CBRMPC, tmp); printk("0x%04x:%04x\n", E1000_RPTHC, tmp); printk("0x%04x:%04x\n", E1000_HGPTC, tmp); printk("0x%04x:%04x\n", E1000_HTCBDPC, tmp); printk("0x%04x:%04x\n", E1000_HGORCL, tmp); printk("0x%04x:%04x\n", E1000_HGORCH, tmp); printk("0x%04x:%04x\n", E1000_HGOTCL, tmp); printk("0x%04x:%04x\n", E1000_HGOTCH, tmp); printk("0x%04x:%04x\n", E1000_LENERRS, tmp); printk("0x%04x:%04x\n", E1000_SCVPC, tmp); printk("0x%04x:%04x\n", E1000_HRMPC, tmp); printk("0x%04x:%04x\n", E1000_PCS_ANADV, tmp); printk("0x%04x:%04x\n", E1000_PCS_LPAB, tmp); printk("0x%04x:%04x\n", E1000_PCS_NPTX, tmp); printk("0x%04x:%04x\n", E1000_PCS_LPABNP, tmp); printk("0x%04x:%04x\n", E1000_1GSTAT_RCV, tmp); printk("0x%04x:%04x\n", E1000_RXCSUM, tmp); printk("0x%04x:%04x\n", E1000_RLPML, tmp); printk("0x%04x:%04x\n", E1000_RFCTL, tmp); printk("0x%04x:%04x\n", E1000_MTA, tmp); printk("0x%04x:%04x\n", E1000_RA, tmp); printk("0x%04x:%04x\n", E1000_VFTA, tmp); printk("0x%04x:%04x\n", E1000_VT_CTL, tmp); printk("0x%04x:%04x\n", E1000_CIAA, tmp); printk("0x%04x:%04x\n", E1000_CIAD, tmp); printk("0x%04x:%04x\n", E1000_VFQA0, tmp); printk("0x%04x:%04x\n", E1000_VFQA1, tmp); printk("0x%04x:%04x\n", E1000_WUC, tmp); printk("0x%04x:%04x\n", E1000_WUFC, tmp); printk("0x%04x:%04x\n", E1000_WUS, tmp); printk("0x%04x:%04x\n", E1000_MANC, tmp); printk("0x%04x:%04x\n", E1000_IPAV, tmp); printk("0x%04x:%04x\n", E1000_IP4AT, tmp); printk("0x%04x:%04x\n", E1000_IP6AT, tmp); printk("0x%04x:%04x\n", E1000_WUPL, tmp); printk("0x%04x:%04x\n", E1000_WUPM, tmp); printk("0x%04x:%04x\n", E1000_PBACL, tmp); printk("0x%04x:%04x\n", E1000_FFLT, tmp); printk("0x%04x:%04x\n", E1000_HOST_IF, tmp); printk("0x%04x:%04x\n", E1000_FFMT, tmp); printk("0x%04x:%04x\n", E1000_FFVT, tmp); printk("0x%04x:%04x\n", E1000_KMRNCTRLSTA, tmp); printk("0x%04x:%04x\n", E1000_MDPHYA, tmp); printk("0x%04x:%04x\n", E1000_MANC2H, tmp); printk("0x%04x:%04x\n", E1000_SW_FW_SYNC, tmp); printk("0x%04x:%04x\n", E1000_CCMCTL, tmp); printk("0x%04x:%04x\n", E1000_GIOCTL, tmp); printk("0x%04x:%04x\n", E1000_SCCTL, tmp); printk("0x%04x:%04x\n", E1000_GCR, tmp); printk("0x%04x:%04x\n", E1000_GCR2, tmp); printk("0x%04x:%04x\n", E1000_GSCL_1, tmp); printk("0x%04x:%04x\n", E1000_GSCL_2, tmp); printk("0x%04x:%04x\n", E1000_GSCL_3, tmp); printk("0x%04x:%04x\n", E1000_GSCL_4, tmp); printk("0x%04x:%04x\n", E1000_FACTPS, tmp); printk("0x%04x:%04x\n", E1000_SWSM, tmp); printk("0x%04x:%04x\n", E1000_FWSM, tmp); printk("0x%04x:%04x\n", E1000_SWSM2, tmp); printk("0x%04x:%04x\n", E1000_DCA_ID, tmp); printk("0x%04x:%04x\n", E1000_DCA_CTRL, tmp); printk("0x%04x:%04x\n", E1000_FFLT_DBG, tmp); printk("0x%04x:%04x\n", E1000_HICR, tmp); printk("0x%04x:%04x\n", E1000_CPUVEC, tmp); printk("0x%04x:%04x\n", E1000_RSSIR, tmp); printk("0x%04x:%04x\n", E1000_TSYNCRXCTL, tmp); printk("0x%04x:%04x\n", E1000_TSYNCTXCTL, tmp); printk("0x%04x:%04x\n", E1000_TSYNCRXCFG, tmp); printk("0x%04x:%04x\n", E1000_RXSTMPL, tmp); printk("0x%04x:%04x\n", E1000_RXSTMPH, tmp); printk("0x%04x:%04x\n", E1000_RXSATRL, tmp); printk("0x%04x:%04x\n", E1000_RXSATRH, tmp); printk("0x%04x:%04x\n", E1000_TXSTMPL, tmp); printk("0x%04x:%04x\n", E1000_TXSTMPH, tmp); printk("0x%04x:%04x\n", E1000_SYSTIML, tmp); printk("0x%04x:%04x\n", E1000_SYSTIMH, tmp); printk("0x%04x:%04x\n", E1000_TIMINCA, tmp); printk("0x%04x:%04x\n", E1000_RXMTRL, tmp); printk("0x%04x:%04x\n", E1000_RXUDP, tmp);
検索用タグ C言語
2012/04/23 (Mon.) Comment(0) C言語
2012
04
23
行末に特定ワードを付け加えるプログラム(C言語)
レジスタダンプするのに使いました。
ソースコード
/* tail_add.c */ #include <stdio.h> #include <string.h> #define STR_MAX 256 #define OUTPUT_FILE "output_tail.txt" void usage(void) { printf("usage: ./tail_add [input_file] [add_word]\n"); printf("result: %s\n", OUTPUT_FILE); } int main(int argc, char *argv[]) { int len; char str[STR_MAX], add_word[STR_MAX]; FILE *fin, *fout; if (argc < 3) { usage(); return 1; } if ((fin = fopen(argv[1], "r")) == NULL) { printf("fin error:[%s]\n", argv[1]); return -1; } if ((fout = fopen(OUTPUT_FILE, "w")) == NULL) { printf("fout error:[%s]\n", OUTPUT_FILE); fclose(fin); return -1; } /* adjustment */ strcpy(add_word, argv[2]); len = strlen(add_word); add_word[len] = '\n'; add_word[len+1] = '\0'; for(;;) { if (fgets(str, STR_MAX, fin) == NULL) { break; /* EOF */ } len = strlen(str); str[len-1] = '\0'; strcat(str, add_word); fputs(str, fout); } fclose(fin); fclose(fout); return 0; }
コンパイル例
gcc -Wall -o tail_add tail_add.c
使い方
./tail_add [input_file] [add_word]
検索用タグ C言語
2012/04/23 (Mon.) Comment(0) C言語
2012
04
23
行頭に特定ワードを付け加えるプログラム(C言語)
レジスタダンプするのに使いました。
ソースコード
/* head_add.c */ #include <stdio.h> #define STR_MAX 256 #define OUTPUT_FILE "output_head.txt" void usage(void) { printf("usage: ./head_add [input_file] [add_word]\n"); printf("result: %s\n", OUTPUT_FILE); } int main(int argc, char *argv[]) { char str[STR_MAX], output_str[STR_MAX]; FILE *fin, *fout; if (argc < 3) { usage(); return 1; } if ((fin = fopen(argv[1], "r")) == NULL) { printf("fin error:[%s]\n", argv[1]); return -1; } if ((fout = fopen(OUTPUT_FILE, "w")) == NULL) { printf("fout error:[%s]\n", OUTPUT_FILE); fclose(fin); return -1; } for(;;) { if (fgets(str, STR_MAX, fin) == NULL) { break; /* EOF */ } sprintf(output_str, "%s%s", argv[2], str); fputs(output_str, fout); } fclose(fin); fclose(fout); return 0; }
コンパイル例
gcc -Wall -o head_add head_add.c
使い方
./head_add [input_file] [add_word]
検索用タグ C言語
2012/04/23 (Mon.) Comment(0) C言語