Posición desocupada en un archivo binario

#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h>   typedef struct Emp { char Nombre[70]; long int Documento; char Sexo[1]; char Categoria[1]; float SueldoBasico; char borrado[1];   } emp;  void alta (FILE *fd);   int main () {  FILE *fd;  alta(fd);  return 0;        }    void alta (FILE *fd) {   emp personas[20];  system ("cls");  fd = fopen ("empleados.bin","ab");   if (fd==NULL) {      printf ("Error al abrir el archivo");     exit (-1);   }    printf ("Ingrese el Nombre del Empleado:\n"); fflush (stdin); gets (personas[i].Nombre);  printf ("Ingrese el Documento del Empleado:\n"); fflush (stdin); scanf ("%d",&personas[i].Documento);  printf ("Ingrese el Sexo del Empleado (m/f):\n"); fflush (stdin); scanf ("%c",&personas[i].Sexo);  printf ("Ingrese Categoria:\n"); fflush (stdin); scanf ("%c",&personas[i].Categoria);  printf ("Ingrese Sueldo Basico:\n"); fflush (stdin); scanf ("%f",&personas[i].SueldoBasico);       }  

Considere la siguiente estructura que estará soportada en un vector de 20 posiciones:
Estructura: Emp (Nombre, Documento, Sexo, Categoría, Sueldo Básico,borrado) Se pide codificar un programa que soporte, en un menú, las siguientes tareas:

Altas de Empleados: Se deberá buscar en el vector una posición desocupada (borrado=’S’) para poder hacer efectiva el alta, en caso contrato se deberá informar la situación.

Mi duda es como plantear ese ejercicio a la hora de buscar una posición desocupada con el borrado que esta dentro de la estructura. ¿Que tipo de condicional me conviene utilizar en este caso?

archivos, guardar arreglo de objetos en un archivo, c++

Tengo un programa que crea un arreglo de objetos y quiero guardar los datos que genere en un archivo, pero no logro figurar como hacerlo, se como crear un archivo simple, de unas cuantas lineas de texto, el problema es aplicarlo a este programa

por ejemplo, con el programa creo dos objetos con todos los datos que pide, lo que sigue es que esos datos que ingrese se guarden en un archivo de texto.

de antemano muchas gracias <2+1

#include<iostream> #include<stdlib.h> #include<string.h> #include<fstream>  using namespace std;  class Estudiante{     private:         string nombre;         int matricula;     public:         Estudiante();         Estudiante(string name, int mat);         string getNombre();         int getMatricula();         void mostrarEstudiante(); };  Estudiante::Estudiante(){     nombre = "unknow";     matricula = 0;  }  Estudiante::Estudiante(string name, int mat){     nombre = name;     matricula = mat; }  string Estudiante::getNombre(){     return nombre; }  int Estudiante::getMatricula(){     return matricula; }  void Estudiante::mostrarEstudiante(){     cout<<"Datos del Estudiante."<<endl;     cout<<"nombre: "<<getNombre()<<" "<<getApellido()<<endl;     cout<<"matricula: "<<getMatricula()<<endl; }   int main(){     int n;     cout<<"digite el numero de estudiantes: ";     cin>>n;     Estudiante e[n];     string name;     int mat;     for(int i=0;i<n;i++){         cout<<"\nDa el nombre del estudiante: ";         cin>>name;         cout<<"\nDa la matricula: ";         cin>>mat;        e[i]=Estudiante(name,mat); } return 0; } 

Error al enviar un archivo por sockets, Recibo mas bytes de los enviados

El problema que tengo es el siguiente, tengo un programa de cliente servidor de archivos utilizando la herramienta sockets

En este caso estoy tratando de mandar un archivo .pdf pero el problema es que los bytes que mando son en total 1896072 pero cuando comparo el que llego ala otra maquina su peso es de 1896073 no se por que pase esto ademas el cliente me lanza un traceback

Traceback (most recent call last):   File "C:\Users\Angel\Desktop\cliente.py", line 20, in <module>     cliente.send(bytes(byte)) ConnectionResetError: [WinError 10054] Se ha forzado la interrupción de una conexión existente por el host remoto 

codigo de cliente:

import socket  CONEXION = ("Pc-1",900) ARCHIVO = "a.pdf"  cliente = socket.socket() cliente.connect(CONEXION)  with open(ARCHIVO,"rb") as archivo:     bufer = archivo.read()  while True:     print("Enviando bufer")     cliente.send(str(len(bufer)).encode("ascii"))      recibido = cliente.recv(2)     if recibido.decode("ascii") == "ok":         for byte in bufer:              cliente.send(bytes(byte))          break 

codigo de servidor:

import socket  CONEXION = (socket.gethostname(),900)  servidor = socket.socket()  servidor.bind(CONEXION) servidor.listen(1)  print("Escuchando {}".format(CONEXION))  sck,addr = servidor.accept()  print("Conectado a: {}".format(addr))  while True:     recibido = sck.recv(1024).strip()     if recibido:         print("Recibido",recibido)      if recibido.decode("ascii").isdigit():         texto = "ok"         sck.send(texto.encode("ascii"))          bufer = 0          with open("archivo.pdf","wb") as archivo:             while(bufer<=int(recibido)):                 data = sck.recv(1)                 if not len(data):                     break                 archivo.write(data)                 bufer += 1             if bufer == int(recibido):                 print("Archivo recibido")             else:                 print(bufer)                 print("Error de transferencia")             archivo.close()          break 

Cuando llega el archvio ala otra pc el archivo pesa un poco mas como mostre en el texto ademas de que no puedo abrir el archivo ya que Windows dice que el archivo se encuentra dañado

Espero puedan ayduarme

¿Cómo puedo generar un archivo geojson por cada consulta hecha a través de webscrapping?

Tengo un csv en el cual almaceno todas las url’s a las que lanzo la consulta a través de beautiful soup de python. La consulta la hago através del siguiente script:

import pandas as pd import requests from bs4 import BeautifulSoup   URL_filename = 'ejemplo.csv' URL_column_name = "url" data = pd.read_csv(URL_filename,encoding='utf8') weblink = (data[URL_column_name]).tolist()  i=0 while i<len(weblink):    page = requests.get(weblink[i]) soup = BeautifulSoup(page.text,'html.parser') print (soup)   i+=1 

El script funciona y me arroja un resutado como este en formato geojson (un resultado similar para cada url):

{ "type": "FeatureCollection", "licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright", "features": [{     "type": "Feature",     "properties": {         "place_id": 110103318,         "osm_type": "way",         "osm_id": 149914077,         "place_rank": 26,         "category": "highway",         "type": "residential",         "importance": 0.1,         "addresstype": "road",         "name": "Calle Julio García",         "display_name": "Calle Julio García, Circunvalación Oblatos, Guadalajara, Jalisco, 44720, México",         "address": {             "road": "Calle Julio García",             "suburb": "Circunvalación Oblatos",             "city": "Guadalajara",             "county": "Guadalajara",             "state": "Jalisco",             "postcode": "44720",             "country": "México",             "country_code": "mx"         }     },     "bbox": [-103.2838528, 20.6960196, -103.2835124, 20.6987892],     "geometry": {         "type": "Point",         "coordinates": [-103.283776174626, 20.6966302195429]     } }] } 

Lo que quiero ahora es escribir un archivo con extensión geojson y con nombre seriado (por ejemplo “resultado1, resultado2, resultado3… resultado n) para cada resultado arrojado por el script. ¿Cómo puedo hacerlo?

Abrir y modificar un archivo de excel desde un datagridview c#

Lo que debo de hacer es abrir mediante un openfiledialog un documento de excel el cual debo mostrarlo en un datagridview (hasta este momento si logro hacerlo). Luego de eso el datagridview debe de ser modificable (aún logro hacerlo) y finalmente en un botón debe de guardar el contenido nuevo de grid en el mismo documento y la misma hoja. Tienen alguna idea de como hacerlo?

pasar datos a un archivo txt

Hola Comunidad espero que se encuentren muy bien estoy intentando pasar una lista a un txt de la siguiente manera

introducir la descripción de la imagen aquí

generar un TXT con esos datos al seleccionar Guardar. Mi código es el siguiente el cual ya genera un txt pero como pasar esos datos ??

   string[]  lines = { "Primera Línea", "Segunda Línea", "Tercera Línea" };           System.IO.File.WriteAllLines(@"C:\Users\Gustabo\Pictures\a\EscribeLineas.txt", lines); 

Esa es la linea que me genera y guarda el txt

  List<object> lista = new List<object>();         object respuesta = null;         int total = 0;         try         {              var cuenta = from elemento in db.CaracteristicasPA                          join trafico in db.Trafico                                on elemento.Trafico_Id equals trafico.Id                          where                          elemento.Activo == 1 && elemento.Id_LineaNegocio == lineaNegocio                           select new                          {                              elemento.Id,                              elemento.Sentido,                              elemento.Trafico_Id,                              trafico.Descripcion,                              elemento.Cuenta,                              elemento.Nlicencia,                              elemento.Region,                              elemento.Ambito,                              elemento.Canal,                              elemento.Bundle,                              elemento.Subtipolinea,                              elemento.Producto,                              elemento.Segmentopa,                              elemento.SubsegmentoPA,                              elemento.Material,                              elemento.IdCodigoCuenta,                          };              foreach (var elemento in cuenta)             {                 lista.Add(new                 {                     Id = elemento.Id,                     Sentido = elemento.Sentido,                     Trafico_Id = elemento.Trafico_Id,                     TraficoDescripcion = elemento.Descripcion,                     Cuenta = elemento.Cuenta,                     Nlicencia = elemento.Nlicencia,                     Region = elemento.Region,                     Ambito = elemento.Ambito,                     Canal = elemento.Canal,                     Bundle = elemento.Bundle,                     Subtipolinea = elemento.Subtipolinea,                     Producto = elemento.Producto,                     Segmentopa = elemento.Segmentopa,                     SubsegmentoPA = elemento.SubsegmentoPA,                     Material = elemento.Material,                     IdCodigoCuenta = elemento.IdCodigoCuenta                 });             }             total = lista.Count();             lista = lista.Skip(start).Take(limit).ToList();             respuesta = new { success = true, results = lista, total = total };         }         catch (Exception ex)         {             respuesta = new { success = true, results = "no" };         }         return Json(respuesta, JsonRequestBehavior.AllowGet);     } 

y esa es la lista la cual obtengo de una tabla llamada CaracteristicasPA que contiene los siguientes campos para agregar. Trato de guardar en el txt. con esos campos de la tabla. Por favor podrian ayudarme a resolver este problema

Cómo pasar un arreglo de checkbox con una clase en especifico (los activos) por Ajax a un archivo PhP

Estoy trabajando con un catálogo de productos, lo que pasa es que necesito juntar tanto la paginación como el filtrado de los mismos para que sean dinámicos (con Ajax).

Hasta ahorita ya he logrado que la paginación sea dinámica, lo que pasa es que en mi archivo de paginación (el cual llamo con Ajax) es donde le estoy diciendo que la consulta sea en base a los productos de esa categoría, pero quiero agregarle obviamente los filtros.

Tengo un aside que es donde se están generando todos los input checkbox, los cuales ya tienen un value en especifico (para la consulta) y todos pertenecen al mismo arreglo (name=subcategorias).

Lo que pasa es que ya agregué una función en javascript la cual les agrega una clase de activos a todos los checkbox que fueron clickeados, entonces lo que quiero hacer es que dentro del data del script Ajax, pueda mandarle el arreglo de checkbox que tienen esa clase (para solamente filtrar por los que fueron clickeados).

Lo que ya intenté es mandarle por Json un array serializado de todos los que tengan class=”active-checkbox”, y dentro del archivo php de paginación hacer un json_decode del GET de ese atributo que envié, pero lamentablemente no me funcionó bien (no sé si lo hice correctament).

Script Ajax y funciones

function getresult(url,data) {     $  .ajax({         url: url,         type: "GET",         data: {             rowcount: $  ("#rowcount").val(),             "mobileSubCat": data,             "pagination_setting": $  ("#pagination-setting").val(),             "subcategorias": JSON.stringify($  ('[class="active-checkbox"]').serializeArray())         },         beforeSend: function() {             $  ("#overlay").show();         },         success: function(data) {             $  ("#pagination-result").html(data);             $  ("#overlay").hide();         },         error: function() {}     }); }  function changePagination(option) {     if (option != "") {         getresult("<?php echo $  httpProtocol.$  host.$  url;?>catalogo/getResult.php");     } }  $  ('.selectSubCat').change(function(){     var data = $  (this).val();     getresult("<?php echo $  httpProtocol.$  host.$  url;?>catalogo/getResult.php",data); });  function checkCheckBox(element){     var isChecked = element.checked;     if(isChecked){         element.classList.add('active-checkbox');     }else{         element.classList.remove('active-checkbox');     }     // Llamamos al Ajax para que haga el refresh con el nuevo select     var data = '';     getresult("<?php echo $  httpProtocol.$  host.$  url;?>catalogo/getResult.php",data); } 

Código PhP de paginación

<?php     session_start();     require_once("../php/class/pagination.php");     require_once("../php/dbcontroller.php");     require("../php/class/productos.php");     require("../php/class/producto_galeria.php");     require("../php/class/categorias.php");     require("../php/class/subcategorias.php");     $  db_handle = new DBController();     $  perPage = new PerPage();     $  galerias = new Producto_galeria();      $  paginationlink = "getResult.php?page=";         $  pagination_setting = $  _GET["pagination_setting"];      $  mobileSelectSubCat = 1;     if(isset($  _GET["mobileSubCat"])){         $  mobileSelectSubCat = $  _GET["mobileSubCat"];         if($  mobileSelectSubCat >= 1){             echo "Entre al if 1";            }     }      if(isset($  _GET["subcategorias"])) {         if (is_array(json_decode($  _POST["subcategorias"],TRUE)) {             $  selected = '';             $  num_subcategorias = count($  _POST["subcategorias"]);             $  current = 0;             foreach ($  _POST["subcategorias"] as $  key => $  value) {                 if ($  current != $  num_countries-1)                     $  selected .= $  value.', ';                 else                     $  selected .= $  value.'.';                 $  current++;             }         }         else {             $  selected = 'No has seleccionado una subcategoría';         }     }      $  id_categoria_pag = $  _SESSION["id_categoria"];     $  sql = "SELECT * from ws_producto where id_categoria = '.$  id_categoria_pag.' and status_producto = 1";      $  page = 1;     if(!empty($  _GET["page"])){         $  page = $  _GET["page"];     }      $  start = ($  page-1)*$  perPage->perpage;     if($  start < 0){         $  start = 0;        }      $  query =  $  sql . " limit " . $  start . "," . $  perPage->perpage;      $  faq = $  db_handle->runQuery($  query);      if(empty($  _GET["rowcount"])){         $  _GET["rowcount"] = $  db_handle->numRows($  sql);     }      if($  pagination_setting == "prev-next"){         $  perpageresult = $  perPage->getPrevNext($  _GET["rowcount"], $  paginationlink,$  pagination_setting);      } else {         $  perpageresult = $  perPage->getAllPageLinks($  _GET["rowcount"], $  paginationlink,$  pagination_setting);      }      $  output = '';      if (is_array($  faq) || is_object($  faq)){         foreach($  faq as $  k=>$  v){             $  consulta = $  galerias->imagen_tabla($  db_handle->connectDB(),$  faq[$  k]["id_producto"]);             $  var = mysqli_fetch_array($  consulta);              $  output .= '<div class="card grid__item">                             <div class="product">                                 <div class="product__bg"></div>                                 <img src="../images/productos/'.utf8_encode($  var["url_galeria"]).'" class="border product__img border-dark image-responsive" alt="Imagen Representativa de producto">                                 <h2 class="product__title">'.utf8_encode($  faq[$  k]["nombre_producto"]).'</h2>                                 <p class="product__subtitle"></p>                                 <p class="product__description">'.utf8_encode($  faq[$  k]["descripcion_producto"]).'</p>                                 <button class="product__price"></button>                             </div>                         </div>';         }     }     if(!empty($  perpageresult)){         $  output .= '<div class="container"><div id="pagination">' . $  perpageresult . '</div></div>';     }      print $  output; ?> 

El estado actual del sitio lo pueden ver en: https://demos.posicionart.com/silleri/catalogo/mesas-y-escritorios.php

¿Cómo cargar un archivo de imagen grande (alrededor de 70 MB) de una página a otra?

Un cliente me pidió que creara un recortador de imagenes y usé el gran complemento de https://fengyuanchen.github.io/cropperjs/

Una vez que la imagen se carga y se recorta, el usuario puede ver una vista previa de la misma en la página donde inició el proceso (los datos de la imagen se almacenan en un campo oculto codificado en base64), al enviar el formulario debe esperar a que se carguen las imágenes (hasta 5 minutos, dependiendo de la velocidad de conexión).

Mi cliente me preguntó una forma de “diferir la carga” para que el usuario pueda finalizar el proceso de compra mientras se carga la imagen.

Mi única idea es abrir una ventana emergente y enviar allí el texto para cargar la imagen mientras el usuario finaliza el proceso.

¿Hay una mejor opción para hacer eso? ¿Es posible hacer lo que quiero?

Permisos para eliminar un archivo

al intentar eliminar un archivo me salta un cartel diciendo:

introducir la descripción de la imagen aquí

bueno pues he estado buscando por Internet sobre como cambiar los permisos, sobre el archivo no me deja hacer nada:

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

Sobre la carpeta, tampoco: introducir la descripción de la imagen aquí

He intentado hacer de todo, probando igual en el disco duro entero, con cmd… pero sigue igual. ¿Se puede solucionar?

Gracias.

PD: no sé muy bien si es el foro para preguntar esto :/

Como generar archivo csv a partir de otro

Tengo una aplicacion que exporta varios archivos con respuestas en formato .csv (alrededor de 100 archivos).

Lo que necesito hacer esque una vez generado el primer archivo de respuestas. Poder leer cuantas lineas tiene (un count) y poder generar un segundo csv con este resultado:

Ejemplo:

TituloDelProjecto     NumeroDeLineas ProjectA              350 

Una vez hecho esto, necesito que al generar el segundo archivo csv. La lectura del count pueda ser agregada (append) a este nuevo segundo archivo.

Ejemplo:

TituloDelProjecto     NumeroDeLineas ProjectA              350 ProjectB              170 

Cada archivo de respuestas, tiene un encabezado. La idea es poder saltarme este encabezado cada vez que se lea el csv y haga el count en hacia el segundo archivo.

Este es parte de mi codigo el cual genera estos archivos de respuesta:

foreach (FileInfo file in d.GetFiles("*.csv")) // {     if (!(file.Name.IndexOf("__") >= 0))     {         string originalFileName = file.FullName;         int y = file.Name.IndexOf("_");         string newFileName = zipFileName + file.Name.Substring(y);          newFileName = Path.GetDirectoryName(outCsvFile) + @"\" + newFileName;         if (File.Exists(newFileName))         {             File.Delete(newFileName);         }         File.Move(originalFileName, newFileName);          files.Add(newFileName);  //newFileName me da el archivo de respuesta                                    } } 

Les agradezco la ayuda.

Saludos.