我有以下的文本文件:如何讀取與文本文件中特定字符串一致的值?
1 Feb Jane Auckland LF1 190.21
2 Feb Jane Auckland BDHIWAY 390.62
7 Feb Adeeva Sharif LSZ 2000.00
8 Feb Adeeva Sharif LF2 52.00
4 Feb Jane Auckland ILZERO 101.03
9 Feb Jerome Velence ILFIVE 4110.00
正如你可以看到有三個人(簡奧克蘭,Adeeva謝里夫和傑羅姆韋倫採)在文本文件中但每種都連接到他們的價值和周圍蔓延文本文件正在被其他人分開..
我想要做的是一次只讀取一個人的文本文件。不過,我希望他們的合併值(最後一個值)加在一起,這樣我就可以通過我的稅務功能並打印工資單並檢查每個人。這將類似於此:
Pay slip for Jane Auckland from file examplep1.txt
+-------------------------+
| Commission : $ 681.86 |
| Tax : $ 0.00 |
| ---------- |
| Net Pay : $ 681.86 |
+-------------------------+
OFFICIAL CHEQUE FOR BANK 'BBPL'
Please pay Jane Auckland an amount of $681.86
[ ] WIC - 420 1337 911
Pay slip for Adeeva Sharif from file examplep1.txt
+-------------------------+
| Commission : $ 2052.00 |
| Tax : $ 101.65 |
| ---------- |
| Net Pay : $ 1950.35 |
+-------------------------+
OFFICIAL CHEQUE FOR BANK 'BBPL'
Please pay Adeeva Sharif an amount of $1950.35
[ ] WIC - 420 1337 911
Pay slip for Jerome Velence from file examplep1.txt
+-------------------------+
| Commission : $ 4110.00 |
| Tax : $ 631.78 |
| ---------- |
| Net Pay : $ 3478.23 |
+-------------------------+
OFFICIAL CHEQUE FOR BANK 'BBPL'
Please pay Jane Auckland an amount of $3478.23
[ ] WIC - 420 1337 911
這裏是我的稅功能:
double calculateTax(double income)
{
double centsPerDollar;
double initialTax;
double minimumTax;
income = round(income); //Rounds income to the nearest interger.
if (income >= 0 && income <= 1517) //First tax bracket.
{
centsPerDollar = 0.00;
initialTax = 0.00;
minimumTax = 0.00;
tax = 0.00;
taxedIncome = income;
}
else if (income >= 1518 && income <= 3083) //Second tax bracket.
{
centsPerDollar = 0.19;
initialTax = 0.00;
minimumTax = 1517.00;
tax = (income - minimumTax) * centsPerDollar + initialTax;
taxedIncome = income - ((income - minimumTax) * centsPerDollar + initialTax);
}
else if (income >= 3084 && income <= 6667) //Third tax bracket.
{
centsPerDollar = 0.325;
initialTax = 298.00;
minimumTax = 3083.00;
tax = (income - minimumTax) * centsPerDollar + initialTax;
taxedIncome = income - ((income - minimumTax) * centsPerDollar + initialTax);
}
else if (income >= 6668 && income <= 15000) //Fourth tax bracket.
{
centsPerDollar = 0.37;
initialTax = 1462.00;
minimumTax = 6667.00;
tax = (income - minimumTax) * centsPerDollar + initialTax;
taxedIncome = income - ((income - minimumTax) * centsPerDollar + initialTax);
}
else if (income >= 15001) //Fifth tax bracket.
{
centsPerDollar = 0.45;
initialTax = 4546.00;
minimumTax = 15000.00;
tax = (income - minimumTax) * centsPerDollar + initialTax;
taxedIncome = income - ((income - minimumTax) * centsPerDollar + initialTax);
}
else { fprintf(stderr, "Must be a positive number."); } //Error check for negative numbers.
}
在我想要做的是個體化每個人有自己的價值觀總結,並把通過該值我稅務功能,並打印出一張工資單並檢查每個人,如示例中所示。
在此先感謝。
您的文本文件的第一個問題是,名稱組件由分隔字段的相同分隔符分隔。使用不同的分隔符,如標籤''\ t''或分號'''',這樣就沒有問題了。 –
沒有標準功能可以直接跳到最終目標。如果您將流程分解爲文件解析和最終結果整理,那麼最好。也就是說,讀取每一行,解析它,存儲解析的信息,然後在文件完全解析後整理最終結果。 – kaylum
您的方法可能會使問題變得困難。爲什麼不把文件中的所有值讀入一個struct *數組,然後按名稱對數組進行排序,並簡單地將每個名稱的值相加?你甚至可以創建一個單獨的結構體來存儲名稱,並且從你從文件中讀取的詳細列表中填充每個人的總和。 –