簡體   English   中英

如何使用fscanf()掃描格式化的字符串?

[英]How to scan a formatted string using fscanf()?

我有多行文件。 每行遵循以下格式

`userID:$An Integer$$String:`

例如:

pyc1:$1$$Tnq7a6/C1wwyKyt0V/.BP/:
pyc2:$6$$Tnq7a6/C1wwyKyt0V/.BP/:

我應該如何使用fscanf()來檢索userID ,整數以及$$和:`之間的字符串?

這就是我現在所擁有的,但是沒有用。

int main(){
    FILE * file = fopen("shadow.txt", "r");
    char line[256] = {0};
    char userID[30] = {0};
    int hashType;
    char hash[256] = {0};
    int result = fscanf(file, "%s :$ %d $$ %s :", userID, &hashType, hash);
    printf("%s\n", userID );
    printf("%d\n", hashType );
    printf("%s\n", hash );

}

我對為fscanf()指定的格式了解不多,以實現此目的。 請幫忙。

嘗試使用正則表達式,例如:

fscanf (file, "%[^:]:$%d$$%[^:]:", userID, &hashType, hash);

我創建了一個regex101鏈接,該鏈接解釋了上面使用的regex表達式。


PS:不要忘記檢查fscanf()的返回值,以確保正確讀取了所有內容。 您要解析三個元素,因此返回值應為3。

嘗試這個:

while(ret = fscanf(file," %[^:] : $ %d $$ %[^:] :",userID,&hashtype,hash))
{

    if(ret == EOF)
    {
        break;
    }

    printf("value of ret: %d\n",ret);
    printf("%s , %d , %s",userid,id,str);

    // . . .

}

在這里,int ret是:

  • EOF,如果指針已到達文件末尾。
  • 0,如果沒有輸入與變量匹配
  • > 0,與文件輸入匹配的變量數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM