implementar un getline en C

Alumno2k
14 de Marzo del 2004
hola, estoy implementando un shell script. Este shell scrip en su main tiene una funcion llamada getline que sirve para leer los comandos que posteriormente deberá analizar y ejecutar. Tengo problemas con la función getline() .. haber si alguien me ayuda, esto es lo que tengo:
//////////////////////////////
char * getline()
{

int i=0;
char linea[MAXLINE];

fprintf(stdout, "%s: %s", getcwd(), PROMPT);
do {

linea[i]=getchar;
i++;
}

while((linea[i-1] != 'n') && (linea[i-1] != EOF));

if(linea[i-1]==EOF) {

printf("ush: saliendo");
exit(0); }

if (strlen(linea) > MAXLINE) { printf("ERROR: Excesivos caracteres"); exit(0); }



return 0;



} /* getline */


/////////////////////////
Al compilar me sale este error:
ush.c: In function `getline':
ush.c:101: error: invalid type argument of `unary *'

no domino mucho los Punteros quizás sea este el problema, pero no encuentro el error.

Agradezco vuestra ayuda
Saludos

noel solw
14 de Marzo del 2004
te envio una parte de un programa con el que estoy
trabajando ahora. Pienso que puede ayudarte.

// program dix.cpp
// algoritmia algo+
// written in c++ ver 3.1 - 13/3/2004

#include <conio.h>
#include <iomanip.h>
#include <iostream.h>
#include <stdio.h>
#include <string.h>

const int MAX = 80;

void Process()
{
char a[MAX+1], *file_name = "ing.dat";
FILE *in = fopen(file_name,"rt");
if(!in)
{
cout << "can't open " << file_name << " - program stoped " << endl;
return;
}
while(!feof(in))
{
fgets(a,MAX,in);
cout << a << endl;
const char *separator = " ";
for(char *tok = strtok(a,separator);tok;tok = strtok(NULL,separator))
cout << tok << endl;
}
fclose(in);
cout << endl;
} // PROCESS

void main()
{
clrscr();
Process();
getch();
} // MAIN

Alejandro 3.b
14 de Marzo del 2004
El mensaje de error que obtienes es bien poco amable. El error puede esta en esta linea:

linea[i]=getchar;

cámbiala por

linea[i] = getchar();

Ahora, si no era eso, no sé.

Ahora, ¿no puedes usar la biblioteca <iostream> que creo que es bastante más generosa, y que te permitirá usar cin, cout, y sobre todo:

fgets(linea, 30, stdin);

que lee una cadena de hasta 30 caracteres desde stdin y los pone en tu array linea. Creo que así la vida sería más fácil.

Alejandro