我一直在試圖彎曲我的頭周圍這個問題一個星期了,但我似乎無法找到任何東西在線,我已經放棄了試圖解決它在我自己的。指向一個字符數組中的特定元素
我的任務是編寫一個程序,它將讀取文件中的名稱並接受來自用戶的新條目,然後對條目進行排序並將它們寫出到文件中。唯一的癥結是我必須在一個函數中對它們進行排序,並使用指針來這樣做。這個代碼應該用C++編寫,並使用字符數組。
我現在的代碼看起來像這樣。這是一個工作版本,唯一的問題是我不使用指針或函數來排序名稱。
#include<iostream>
#include<cstdlib>
#include<fstream>
#include<cstring>
bool sorted;
using namespace std;
int main()
{
int i = 0;
int numNames = 0;
ifstream ifs;
ifs.open("namn.txt");
char c[20][20];
if(ifs.is_open())
{
while(!ifs.eof())
{
ifs >> c[i];
i++;
}
}
cout<<"How many names do you want to enter?"<<endl;
cin>>numNames;
for(int l = i-1; l<numNames+i-1; l++)
{
system("cls");
cout<<"Enter a name: ";
cin>>c[l];
}
while(sorted == false)
{
for(int j = 0; j<numNames+i-1; j++)
{
for(int k = j; k<numNames+i-1; k++)
{
if(c[j][0] > c[k][0])
{
char snorre[20];
strcpy(snorre,c[j]);
strcpy(c[j],c[k]);
strcpy(c[k],snorre);
}
else if(c[j][0] == c[k][0])
{
if(c[j][1] > c[k][1])
{
char snorre[20];
strcpy(snorre,c[j]);
strcpy(c[j],c[k]);
strcpy(c[k],snorre);
}
}
}
}
cout<<endl<<endl<<endl;
ofstream ofs;
ofs.open("namn.txt");
for(int o = 0; o<numNames+i-1; o++)
{
cout<<c[o]<<" ";
ofs<<c[o]<<endl;
}
ofs.close();
system("pause");
sorted = true;
}
}
所以希望有人能幫助我解決這個問題,提前致謝! :)
http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered- WRO ng –
我認爲如果字符串的前2個字符相同(和其他一些情況),則排序不起作用 –
可能希望的答案是創建指向數組的指針,每個指向一個字符串,然後對指針進行排序,而不是使用'strcpy'。 (現代編碼標準是絕對可怕的,但聽起來你的任務自1985年以來一直沒有更新) –