首先要做的是,這是作業,是的,我一直試圖弄清楚自己,是的,我讀過類似的問題,但沒有找到我需要的幫助。瞭解sscanf格式
我有一個.txt文件,我正在讀入一個結構,我真的很難理解sscanf的格式。我現在正處在一個地方,我只是在嘗試任何一切,所以我擔心,如果我確實做對了,那將是因爲我很幸運,而不是因爲我實際上明白我在做什麼,希望你的好人可以提供幫助。
下面是從.TXT
4, Ben Appleseed, 1587 Apple Street, Salt Lake City, UT, 80514
2, Terri Lynn Smith, 1234 Slate Street, Cincinnati, OH, 45242
注樣本數據:每個「字段」是由空格,逗號或製表符分隔。一些條目沒有中間名,其他條目都遵循相同的模式。 (如果任何人有如何處理線W/O的所有8個字段我願意幫助諮詢)
這是我的結構:
typedef struct
{
long lngRecordID;
char strFirstName[50];
char strMiddleName[50];
char strLastName[50];
char strStreet[100];
char strCity[50];
char strState[50];
char strZipCode[50];
} udtAddressType;
這是我的家常便飯,填補結構
void AddAddressToArray(char strBuffer[], udtAddressType audtAddressList[])
{
int intIndex = 0;
for (intIndex = 0; intIndex < strBuffer[intIndex]; intIndex += 1)
{
if(sscanf(strBuffer, "%d, %s %s %s %s %s %s %s ",
&audtAddressList[intIndex].lngRecordID,
&audtAddressList[intIndex].strFirstName,
&audtAddressList[intIndex].strMiddleName,
&audtAddressList[intIndex].strLastName,
&audtAddressList[intIndex].strStreet,
&audtAddressList[intIndex].strCity,
&audtAddressList[intIndex].strState,
&audtAddressList[intIndex].strZipCode) != 8)
{
break;
}
}
}
這給了我的輸出:
Address #50 -------------------------
Address ID: 4
First Name: Ben
Middle Name: Appleseed,
Last Name: 1587
Street Address: Apple
City: Street,
State: Salt
Zip Code: Lake
而這是不正確的。
我不明白如何指定我希望三個地址字段在一行上。 我一直在閱讀的很多內容只是讓我更加困惑。
功能將文件加載到數組:
void PopulateAddressList(udtAddressType audtAddressList[])
{
// Declare a file pointer
FILE* pfilInput = 0;
int intResultFlag = 0;
char strBuffer[50] = "";
char chrLetter = 0;
int intIndex = 0;
// Try to open the file for reading
intResultFlag = OpenInputFile("c:\\temp\\Addresses1.txt", &pfilInput);
// Was the file opened?
if (intResultFlag == 1)
{
// Yes, read in records until end of file(EOF)
while (feof(pfilInput) == 0)
{
// Read next line from file
fgets(strBuffer, sizeof(strBuffer), pfilInput);
AddAddressToArray(strBuffer, &audtAddressList[intIndex]);
intIndex += 1;
}
// Clean up
fclose(pfilInput);
}
}
任何幫助,非常感謝!
第一分割由逗號輸入,和治療的名稱作爲一個字段。然後根據空格拆分名稱。 –
顯示的代碼片段中沒有輸出功能。請閱讀[問]並提供[mcve]。 – Olaf
@Olaf輸出功能添加 – user3691838