需要正确实施此方法的帮助:
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main() {
char s[100][100], t[100];
int i, j, c,position = 0;
ifstream inFile("Lab9_2Data.txt");
while (!inFile.eof())
{
for (i = 0; i < 30; i++)
for (j = 0; j < 30; j++)
inFile >> s[i];
}
/*for (i = 0; i < 30; i++)
//inFile >> s[i];
cin >> s[i]*/
printf("Strings are Before Sorting : \n");
for (i = 0; i < 30; i++)
printf("%s, ", s[i]);
for (i = 1; i < 30; i++) {
for (j = 1; j < 30; j++) {
//swap
if (strcmp(s[j - 1], s[j]) > 0) {
strcpy(t, s[j - 1]);
strcpy(s[j - 1], s[j]);
strcpy(s[j], t);
}
}
}
cout << "\n\n";
printf("\n Strings are after sorting : \n"); //Printing given strings after sorting.
for (i = 0; i < 30; i++)
{
printf("%s, ", s[i]);
}
cin.get();
getchar();
inFile.close();
return 0;
}
答案 0 :(得分:1)
您可以尝试使用vector<vector<char>>
来构建2D数组。代码是这样的:
vector<vector<char>> arrays;
ifstream inFile("Lab9_2Data.txt");
while (!inFile.eof())
{
for (i = 0; i < 30; i++){
vector<char> temp;
for (j = 0; j < 30; j++){
char t;
inFile >> t;
temp.push_back(t);
}
arrays.push_back(temp);
}
}
通过这种方式,您可以获得30 * 30阵列。您可以使用arrays[i][j]
访问该数组中的每个元素。
顺便说一下,如果您使用iostream
和cin
,cout
,请不要使用printf()
,因为它们具有相同的功能,但printf
是C -style函数和iostream
是C ++风格。如果您使用C ++编写,请继续使用C ++样式代码而不是C样式。