Estoy obteniendo "Error de bus" tratando de leer stdin
en una variable char*
. Solo quiero leer todo lo que viene sobre stdin
y ponerlo primero en una variable, luego continuar trabajando en la variable.¿Cómo se lee la entrada estándar en la variable de cadena hasta EOF en C?
Mi código es el siguiente:
char* content;
char* c;
while(scanf("%c", c)) {
strcat(content, c);
}
fprintf(stdout, "Size: %d", strlen(content));
Pero de alguna manera siempre me dan "Error de bus" devuelta al llamar cat test.txt | myapp
, donde myapp
es el código compilado anteriormente.
Mi pregunta es ¿cómo leo stdin
hasta EOF en una variable? Como puede ver en el código, solo quiero imprimir el tamaño de la entrada viniendo por stdin, en este caso debe ser igual al tamaño del archivo test.txt
.
Pensé que el solo uso de scanf
sería suficiente, tal vez una forma de leer temporalmente stdin
?
Por qué no utilizar stat() para obtener el tamaño del archivo, luego use el tamaño de archivo + 1 para (intente) malloc el búfer y luego lea() en el búfer? – technosaurus