APUA KAIVATAAN TIEDOSTON KÄSITTELYYN

Olen tekemässä erästä koulutyötä ja ongelmani on seuraava:

1. En saa osaa liittää txt tiedostosta luettuja arvoja ohjelmaani oikealla tavalla.

2. Saan kuitenkin normaalisti liitettyä lukuja ohjelmaani

Ohessa koodia:

main()
{
bool ht_inc;
int info ;
int choice;
struct node *root = (struct node *)malloc(sizeof(struct node));
root = NULL;
FILE* fp;
char buffer[100];
int count = 0;


TÄMÄ EI TOIMI

printf("Opening file..\n");
fp = fopen("my.txt", "r");
while (fgets(buffer, 100, fp) != NULL) // MITEN SAAN BUFFERIIN LUETUT TIEDOT SIIRRETTYÄ INFOON ??
{ // JA MIELELLÄÄN JOS JOKU SELITTÄÄ TUON IHAN KOODILLA
if( search(root,info) == NULL )
root = insert(info, root, &ht_inc);
else
printf("Duplicate value ignored\n");
count ;
}
fclose(fp);


TÄMÄ KYLLÄ TOIMII

printf("Enter the value to be inserted : ");
scanf("%d", &info);
if( search(root,info) == NULL )
root = insert(info, root, &ht_inc);
else
printf("Duplicate value ignored\n");
3523
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

Vinkki1:
buffer on char-taulukko ja info on int, eli jotain tarttis tehdä.

Vinkki2:
fscanf tai sscanf auttanee (en nyt muista tarkkaan).

Äänestä

Pitipä ihan kokeilla eli näin helposti onnistuu fscanf-jutulla integerin luku:

int main ()
{
int num;

FILE * filep;
filep = fopen ("myfile.txt","r");

while (fscanf( filep, "%d", &num) == 1) {
printf ("%d\n", num);
}

fclose (filep);

return 0;
}

Ehto on == 1, koska fscanf palauttaa onnistuneiden skannauksien lukumäärän (jolloin tiedosto voi sisältää ylimääräistä 'roskaa' vaikkapa tekstiä).

Äänestä
  • Mun pitää kokeilla että miten tuo toimii ns. käytännössä :)
    Mut kyselen lisää jos en saa toimimaan..kiitos kuitenkin neuvostasi

    Äänestä

Kommentoi aloitusta


Copettelija kirjoitti:

Olen tekemässä erästä koulutyötä ja ongelmani on seuraava:

1. En saa osaa liittää txt tiedostosta luettuja arvoja ohjelmaani oikealla tavalla.

2. Saan kuitenkin normaalisti liitettyä lukuja ohjelmaani

Ohessa koodia:

main()
{
bool ht_inc;
int info ;
int choice;
struct node *root = (struct node *)malloc(sizeof(struct node));
root = NULL;
FILE* fp;
char buffer[100];
int count = 0;


TÄMÄ EI TOIMI

printf("Opening file..\n");
fp = fopen("my.txt", "r");
while (fgets(buffer, 100, fp) != NULL) // MITEN SAAN BUFFERIIN LUETUT TIEDOT SIIRRETTYÄ INFOON ??
{ // JA MIELELLÄÄN JOS JOKU SELITTÄÄ TUON IHAN KOODILLA
if( search(root,info) == NULL )
root = insert(info, root, &ht_inc);
else
printf("Duplicate value ignored\n");
count ;
}
fclose(fp);


TÄMÄ KYLLÄ TOIMII

printf("Enter the value to be inserted : ");
scanf("%d", &info);
if( search(root,info) == NULL )
root = insert(info, root, &ht_inc);
else
printf("Duplicate value ignored\n");

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu