关于指针数组,请教.
#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>
#include <stdlib.h>
void outputLine(const char *);
void reset(const char *[] );
int main()
{
ifstream inClientFile( "test.txt ",ios::in);
if(!inClientFile){
cerr < < "File count not be opened\n ";
exit(1);
}
const char *strings[1000];
char name[30];
int i=1;
while(inClientFile> > name)
{
outputLine(name);
strings[i]=name;
cout < <setiosflags(ios::left) < <setw(10) < <strings[i] < < '\n ';
i=i+1;
if(i> 5)
break;
}
reset(strings);
return 0;
}
void outputLine(const char *name)
{
//cout < <setiosflags(ios::left) < <setw(10) < <name < < '\n ';
}
void reset(const char *strings[] )
{
for(int j=1;j <=5;j=j+1)
cout < <setiosflags(ios::left) < <strings[j] < < '\n ';
}
请问数组strings[i]在main()中输出的是正确的内容(不同的单词).但在reset()函数中strings输出的内容都是一样的(同一个单词).请问错在那里?
[解决办法]
strings[i]=name;
你拷贝了指针,而不是指针所指的内容。基本级错误啊。
[解决办法]
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include <string>
using namespace std;
void outputLine(const string);
void reset(const string[]);
int main()
{
ifstream inClientFile( "test.txt ",ios::in);
if(!inClientFile){
cerr < < "File count not be opened\n ";
exit(1);
}
string strings[1000];
string name;
int i=1;
while(inClientFile> > name)
{
outputLine(name);
strings[i]=name;
cout < <setiosflags(ios::left) < <setw(10) < <strings[i] < < '\n ';
i=i+1;
if(i> 5)
break;
}
reset(strings);
return 0;
}
void outputLine(const string name)
{
//cout < <setiosflags(ios::left) < <setw(10) < <name < < '\n ';
}
void reset(const string strings[] )
{
for(int j=0;j <=5;j=j+1)
cout < <setiosflags(ios::left) < <strings[j] < < '\n ';
}