У меня есть 3 вопроса:
- Почему
userHostPairs[count]=line
дает нежелательный результат, как объяснено в комментарии в коде? - Почему произойдет сбой программы при печати?
- Как передать userHostPairs в качестве аргумента в readEnv (), чтобы его можно было использовать в main?
#define MAX_HOSTS 100
#define MAX_LINE_SIZE 100
void readEnvList()
{
FILE *fp;
char line[MAX_LINE_SIZE];
char* userHostPairs[MAX_HOSTS];
if((fp = fopen("somefile", "r")) == NULL)
{
//ERR_StdReportAndReturn_2(OPIGN_FILE_FAILURE ,"write", schScriptFileName);
printf("Failed to open the file\n");
}
int count =0;
while (fgets(line, sizeof(line), fp) != NULL ) {
//userHostPairs[count]=line; --Assignment like this gives undefined results. e.g. at the end of the loop userHostPairs[0] & userHostPairs[1] both contain the last fetched line from file.
strcpy(userHostPairs[count],line);
count++;
}
printf("%s",userHostPairs[0]); //CORE DUMP here
}
int main()
{
readEnvList();
}