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");
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");
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).
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ä).
Mun pitää kokeilla että miten tuo toimii ns. käytännössä :)
Mut kyselen lisää jos en saa toimimaan..kiitos kuitenkin neuvostasi