[英]split string into different parts without spaces and dividers
我有一個字符串 2020122812.txt,我希望能夠從中提取四位數年份、二位數月份、二位數日期和二位數小時的數字。
下面是我嘗試執行此操作的代碼片段,其中 2020122812.txt 將作為第一個參數輸入:
int main(int argc, char *argv[])
{
char txtfName[500];
int bYYYY;
int bMM;
int bDD;
int bHH;
sprintf(txtName,"%s",argv[1]);
sscanf(txtName,"%.4d%.2d%0.2d%0.2d.txt",YYYY,MM,DD,HH);
printf("YYYY=%d\n",YYYY);
printf("MM=%d\n",MM);
printf("DD=%d\n",DD);
printf("HH=%d\n",HH);
}
不幸的是,我得到 YYYY、MM、DD、HH 的零,而不是期望的結果:
2020 for YYYY
12 for MM
28 for DD
12 for HH.
如何調整此代碼以獲得我想要的結果?
與printf()
不同, scanf()
中的轉換說明符沒有指定精度的選項。 讀取的最大長度應指定不帶.
.
固定代碼:
#include <stdio.h>
int main(int argc, char *argv[])
{
int YYYY;
int MM;
int DD;
int HH;
if (argc < 2) return 1;
if (sscanf(argv[1],"%4d%2d%2d%2d.txt",&YYYY,&MM,&DD,&HH) != 4) return 1;
printf("YYYY=%d\n",YYYY);
printf("MM=%d\n",MM);
printf("DD=%d\n",DD);
printf("HH=%d\n",HH);
}
這些錯誤也已在此代碼中修復:
sscanf()
的結果。&
在sscanf()
的 arguments 中丟失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.