簡體   English   中英

從txt文件讀取C中的字符串

[英]Read strings in C from txt file

我正在嘗試從txt文件讀取一些字符串。 每行有一個5位數字,一個全名,占51個字符(包括空格),兩個城市名稱,每個占11個字符(包括空格)和一個數字。 例:

12345António Manuel Silva Mendes                        Frankfurt  Varsovia    1

現在,我可以掃描前兩個字符串,但是無法掃描城市名稱或最后一個數字。

這是結構:

typedef struct bilhete{

    int BI;
    char nome[51];
    char partida[11];
    char chegada[11];
    int data[2];

}BILHETE;

這是我讀取文件的方式

while(!feof(fp)){

        fscanf(fp,"%d%51[^\n]s%11c%11c%d\n", &bilhete.BI, bilhete.nome, bilhete.partida, bilhete.chegada, &bilhete.data);

我究竟做錯了什么? 當我打印城市名稱時,什么都沒有出現!

由於您具有固定的列,因此我將考慮讀取數據並使用類似以下內容進行自己的掃描:

char linein[200];
char *p;

while (fgets(linein, sizeof(linein), fp))
{
    char biBuf[10]={0};
    char dataBuf[10]={0};

    p=linein;
    memcpy(biBuf,linein,5);
    bilhete.BI=atoi(biBuf);
    p+=5;
    memcpy(bilhete.nome,p,51);
    p+=51;
    memcpy(bilhete.partida,p,11);
    p+=11;
    memcpy(bilhete.chegada,p, 11);
    p+=11;
    memcpy(dataBuf,p,2);
    bilhete.data[0]=atoi(dataBuf);
    printf("%.51s %d\n",bilhete.nome, bilhete.data[0]);
}

我不確定您要使用data變量做什么,但這將為您提供一個整數。 請注意,biBuf和dataBuf變量在循環中分配,因此每次將它們設置為零。

暫無
暫無

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

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