我需要從txt 檔案中獲取名稱串列,然后按字母順序對它們進行排序。但是讓我們首先專注于獲取串列本身..
這是輸入的txt檔案(格式由練習給出)(注釋是練習給出的解釋,實際上并不存在)
3 // the number of total name groups
5 // the number of names in the individual group
Ambrus Anna
Bartok Hanna Boglar
Berkeczi Aron
Kovacs Zoltan David
Sukosd Mate
7
Biro Daniel
Csoregi Norbert
Drig Eduard
Dulf Henrietta
Fazekas Gergo
Gere Edit
Pandi Aliz
6
Albert Nagy Henrietta
Benedek Andor
Gere Andor
Lupas Monika
Pulbere David
Sallai Mark
所以,我試圖獲取所有 3 個單獨的名稱組并將它們放在一個陣列中。這是代碼:
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
void input(const char* fname, int& n, char students[100][100])
{
ifstream file(fname);
int groups, studNum;
char temp[50], emptyline[50];
file >> groups;
for(int i = 0; i < groups; i )
{
file >> studNum;
file.getline(emptyline, 100); //I actually don't know why there is an empty line after the numbers
for(int j = 0; j <= studNum; j )
{
//I'm going line by line with getline.. I'm not using fin, because sometimes the name consists of 3 elements, sometimes of 2
file.getline(temp, 100);
strcat(students[j n], temp);
}
n = studNum;
}
file.close();
}
int main()
{
int n = 0;
char students[100][100];
input("aigi4153_L2_6.txt", n, students);
//printing the array
for(int i = 0; i < n; i )
{
cout << students [i] << endl;
}
return 0;
}
所以,代碼看起來不錯,而且幾乎可以作業.. 輸出是 99% 的好,但是在名字“Pulbere David”之前有一個神秘的“6” ..我不知道它是怎么回事..我不知道不認為它與“Albert Nagy Henrietta”之前的“6”有任何關系,因為如果我將其更改為“7”,例如,神秘的“6”將保持相同的數字..所以,輸出是這樣的:
Ambrus Anna
Bartok Hanna Boglar
Berkeczi Aron
Kovacs Zoltan David
Sukosd Mate
Biro Daniel
Csoregi Norbert
Drig Eduard
Dulf Henrietta
Fazekas Gergo
Gere Edit
Pandi Aliz
Albert Nagy Henrietta
Benedek Andor
Gere Andor
Lupas Monika
6Pulbere David //here is the "mysterious 6"
Sallai Mark
關于 6 如何到達那里的任何想法?
uj5u.com熱心網友回復:
您正在閱讀 6 作為名稱的一部分,您最內層的回圈應該是:
for(int j = 0; j < studNum; j )
并不是
for(int j = 0; j <= studNum; j )
此外,您永遠不會初始化students陣列的內容,因此strcat會嘗試將名稱附加到可能包含任何內容的字串中。您應該將內容歸零:
char students[100][100];
memset(students, 0, sizeof(students));
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351934.html
上一篇:檢查字串是否包含子字串C
