Avatar billede anders_stigaard Nybegynder
16. januar 2006 - 15:28 Der er 6 kommentarer

Indsæt tekst i bestemt linje!!

#include <stdio.h>
#include <conio.h>

int main(void)
{
  FILE *inpFile=freopen("lamp.txt", "rt", stdout);
  FILE *outpFile=freopen("lamp1.txt", "wt", stdout);
  int  lineCount;
  char  buffer[256];
  char *nyLinie = "hmmm";
 


  if ((inpFile==NULL) || (outpFile==NULL))
  {
    fprintf(stderr, "error redirecting stdout\n");
    return -1;
  }

  lineCount = 0;
 
  while (fgets(buffer, sizeof(buffer)-1, inpFile) != NULL)
  {
    if (++lineCount == 5)
    fputs(nyLinie, outpFile);
    else
      fputs(buffer, outpFile);
  }
 
  fclose(outpFile);
  fclose(inpFile);
  return 0;
}

---------------------

Jeg har fundet lidt kode her på eksperten.. Men jeg kan ikke få det til at virke..

her vil jeg f.eks. gerne skrive "hmm" i linje 5.. Men det er noget i :

while (fgets(buffer, sizeof(buffer)-1, inpFile) != NULL)

der ikke virker helt rigtigt.. Jeg er heller ikke helt med på hvad denne linje gør?
Min lamp1 fil er helt tom!
Avatar billede anders_stigaard Nybegynder
16. januar 2006 - 15:29 #1
altså har 10 linjer med tekst i min lamp.txt... Men min lamp1.txt forbliver tom!
Avatar billede arne_v Ekspert
16. januar 2006 - 17:04 #2
skal

FILE *inpFile=freopen("lamp.txt", "rt", stdout);
FILE *outpFile=freopen("lamp1.txt", "wt", stdout);

ikke være

FILE *inpFile=fopen("lamp.txt", "r");
FILE *outpFile=fopen("lamp1.txt", "w");

?
Avatar billede anders_stigaard Nybegynder
16. januar 2006 - 18:04 #3
hmm måske! prøver i morgen, har self ik min laptop med hjem.. :)
Avatar billede anders_stigaard Nybegynder
19. januar 2006 - 10:02 #4
hmm.. der er ingen forskel! Den for slet ikke skrevet det som står i lamp over i lamp1.. ikke en gang det som står i min *nyLinie...!
Avatar billede anders_stigaard Nybegynder
24. januar 2006 - 11:36 #5
løste dette vha. et kodeeksempel jeg fik af i en anden forum tråd..

#include <iostream>
#include <vector>
#include <fstream>

int main()
{
  std::vector<int> MyVector;
  std::ifstream In("hej.txt");
  int i, t;
  for(i = 0; i < 5 && In >> t; i++)
      MyVector.push_back(t);
     

  In.close();

  MyVector[x] = y;  //x = pladsen; y=det der skal overskrives på plads x

  std::ofstream Out("hej.txt");
  for(i = 0; i < 5 && i < MyVector.size(); i++)
      Out << MyVector[i] << std::endl;
  Out.close();
}
Avatar billede arne_v Ekspert
28. januar 2006 - 02:47 #6
C:\>type lamp.txt
1
2
3
4
5
6
7
8

C:\>type mod.c
#include <stdio.h>
#include <conio.h>

int main(void)
{
  FILE *inpFile=fopen("lamp.txt", "r");
  FILE *outpFile=fopen("lamp1.txt", "w");
  int  lineCount;
  char  buffer[256];
  char *nyLinie = "hmmm\n";



  if ((inpFile==NULL) || (outpFile==NULL))
  {
    fprintf(stderr, "error redirecting stdout\n");
    return -1;
  }

  lineCount = 0;

  while (fgets(buffer, sizeof(buffer)-1, inpFile) != NULL)
  {
    if (++lineCount == 5)
    fputs(nyLinie, outpFile);
    else
      fputs(buffer, outpFile);
  }

  fclose(outpFile);
  fclose(inpFile);
  return 0;
}

C:\>gcc mod.c -o mod.exe

C:\>del lamp1.txt

C:\>mod

C:\>type lamp1.txt
1
2
3
4
hmmm
6
7
8

C:\>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester