unexpected values received when writing and reading from file


 
Thread Tools Search this Thread
Top Forums Programming unexpected values received when writing and reading from file
# 1  
Old 12-03-2010
unexpected values received when writing and reading from file

In the code below i try to write and read from a file, but i get unexpected results, like after writing i cannot open the file, and when reading the file the value entered earlier is not shown

Code:
bool creat_fragments(int nFragment)
{
  int  fd, rand_value;
  char frag_path[20], buf[2];

   for(int i = 1; i <= nFragment; i++)
   {
      snprintf(frag_path, sizeof(frag_path), "fragment%d", i);
      rand_value = rand() % _RAND_RANGE + 1;
      printf("%d\n", rand_value);
       if( (fd = open(frag_path, O_RDWR | O_CREAT | O_TRUNC, FILE_MODE) ) < 0 ){
           perror("file creation failed..\n");
             return false;
   }
       snprintf(buf, sizeof(buf), "%d", rand_value);
       if(write(fd, buf, 2) < 0){
                  perror("cannot write to fragments..\n");
                     return false;}

   close(fd);

  }//for     

  char buf1[2];
  int fd1 = open("./fragmen7", O_RDONLY);
   read(fd1, buf1, 2);
    printf("value: %d\n", buf1);

   return true;
}

# 2  
Old 12-03-2010
One main issue is you write ascii numbers but read them back as binary data.
# 3  
Old 12-03-2010
how can i correct it?, even when i write values to the file, i cannot open it manually, it says it not readable
this time when wanna start reading, the open() returns -1

Code:
   for(int i = 1; i <= nFragment; i++)
   {
      snprintf(frag_path, sizeof(frag_path), "fragment%d.dat", i);
      rand_value = rand() % _RAND_RANGE + 1;
      printf("%d\n", rand_value);
       if( (fd = open(frag_path, O_RDWR | O_CREAT | O_TRUNC, FILE_MODE) ) < 0 ){
           perror("file creation failed..\n");
             return false;
   }
       snprintf(buf, sizeof(buf), "%d", rand_value);
       if((n = write(fd, buf, sizeof buf)) < 0){
                  perror("cannot write to fragments..\n");
                     return false;}
   close(fd);

  }//for     
/*
sleep(2);  
  char buf1[3], str[3];
  int fd1;
   if((fd1 = open("/home/user/Desktop/Link to 02-12-2010/fragmen4.dat", O_RDONLY)) < 0){
      printf("error opening file..\n");
        exit(1);
   }
   n = read(fd1, buf1, 3); 
   printf("n = %d\n", n); printf("%d", atoi(buf1));
*/

# 4  
Old 12-03-2010
It would help if you post compilable code instead of samples.

FILE_MODE might be wrongly defined but you give no clue about its value.

What is that "Link to 02-12-2010" stuff ? What OS are you running ?
# 5  
Old 12-03-2010
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)

my OS is Linux Ubuntu
# 6  
Old 12-03-2010
Using the same prefix would help: fragment vs fragmen.
# 7  
Old 12-03-2010
I am so sorry i just noticed you asked me the compilable code.

I am writing the code for a single file, i can't directly store an integer in a file as it wouldn't be readable, i have to use sprintf convert it to a string and then write it. i think the problem is that the write() operation writes the whole string
see

Code:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<errno.h>
#include<fcntl.h>
#include<ctime>
#include<cmath>
#include<iostream>
using namespace std;
#define FILE_MODE  (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
#define _PARAM 5
#define _RAND_RANGE 100
#define DOWNLOADER_FIFO "/tmp/fifo.0"

int main(int argc, char **argv){
   int fd, value = 19;
   int n;
   char c[10];

   if( (fd = open("file.txt", O_WRONLY | O_CREAT, FILE_MODE) ) < 0 ){
        perror("file creation failed..\n");
          return false;
   }      sprintf(c, "%d", value);
          if((n = write(fd, c, sizeof c)) < 0){
                  perror("\n");
                     return false;} 
   close(fd);

return 0;
}

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Reading and Writing a conf file - Suggestions and improvements?

Hello all As part of my TUI - (line based) Text User Interface, i do have 2 commands to assist working with conf files. Now, for me they work, but since i wrote them, i automaticly use them they way they should be used... you know what i mean. ;) Anyway, they are designed to read 'simple'... (3 Replies)
Discussion started by: sea
3 Replies

2. Shell Programming and Scripting

Perl: Writing table values to a file

I have a file like this, 1,a,saurav 2,b,rout I want to show this file in a perl cgi page table and want to add a column which will contain a text box. There I will give some manual input, which will be written to the existing file(or a new file) in below format. 1|a|saurav|bangalore... (2 Replies)
Discussion started by: sauravrout
2 Replies

3. Shell Programming and Scripting

Reading and writing in same file

Hi All, Here is my requirement. I am grepping through the log files and cutting some fields from the file to generate a csv file. Now I have to check if 2nd field is having some fixed value then with the help of 4th field I have to look in same log and run another grep command to retrieve the... (11 Replies)
Discussion started by: kmajumder
11 Replies

4. Shell Programming and Scripting

reading a file extracting information writing to a file

Hi I am trying to extract information out of a file but keep getting grep cant open errors the code is below: #bash #extract orders with blank address details # # obtain the current date # set today to the current date ccyymmdd format today=`date +%c%m%d | cut -c24-31` echo... (8 Replies)
Discussion started by: Bruble
8 Replies

5. Shell Programming and Scripting

Searching for Log / Bad file and Reading and writing to a flat file

Need to develop a unix shell script for the below requirement and I need your assistance: 1) search for file.log and file.bad file in a directory and read them 2) pull out "Load_Start_Time", "Data_File_Name", "Error_Type" from log file 4) concatinate each row from bad file as... (3 Replies)
Discussion started by: mlpathir
3 Replies

6. Shell Programming and Scripting

Reading data from DataBase and Writing to a file

Hi All, Please help me in writing data to a file in one row. In database there is a column which contains large data which does not fit in the file in one row. The column contains list of paths. I want to write these paths to a file in one row. Please find the code below writes : ... (2 Replies)
Discussion started by: rajeshorpu
2 Replies

7. Programming

I need help with file reading/writing in C

Hello everybody, I'm trying to code a program which makes the following: It sends an ARP request frame and when it gets the reply, extracts the IP address of source and writes it to a .txt file. This is gonna be done with many hosts (with a for() loop), so, the text file would look like... (2 Replies)
Discussion started by: Zykl0n-B
2 Replies

8. UNIX for Dummies Questions & Answers

Log File Writing and Reading

Hi all, I have the following shell script code which tries to sftp and writes the log into the log file. TestConnection () { echo 'Connection to ' $DESTUSERNAME@$DESTHOSTNAME $SETDEBUG if ]; then rm $SCRIPT ; fi touch $SCRIPT echo "cd" $REMOTEDIR >> $SCRIPT echo "quit" >>... (10 Replies)
Discussion started by: valluvan
10 Replies

9. UNIX for Dummies Questions & Answers

reading ,writing,appending ,manipulating a file.

Hi my prob statement is to create a new file or to append to the 1tst file the followign chages. File 1: txt file. portfolio No a b c d abc 1 Any Any Any charString cds 2 values values values charString efd 3 can can can charString fdg 4 come come come charString... (4 Replies)
Discussion started by: szchmaltz
4 Replies

10. Programming

Reading and Writing file on LAN

Hi gurus I am not a C programmer but I need to read and write files on a computer on LAN using IP address. Suppose on a computer that has an IP 192.168.0.2 Any help or code example. I did in JAVA using URL, but do not know how to do in ANSI-C. In java: ------- URL url = new... (3 Replies)
Discussion started by: lucky001
3 Replies
Login or Register to Ask a Question