Sponsored Content
Top Forums Programming Correct way to read data of different formats into same struct Post 302940450 by Don Cragun on Monday 6th of April 2015 01:46:17 AM
Old 04-06-2015
I guess I don't see your problem.

Changing your program slightly so it will compile, read from standard input instead of from a hardcoded filename, and not overwrite memory following your array if you overflow the array:
Code:
#include <stdio.h>

#define	NMAX	7

typedef struct info
{
  char name[20];
  double test;
  double quiz;
  double English;
} Info;

int main()
{
  int	n = 0;
  int	ret;
  Info	record[NMAX];

  while (n < NMAX && (ret = fscanf (stdin, "%s %lf %lf %lf", 
               record[n].name, &record[n].test,
               &record[n].quiz, &record[n].English)) == 4)
    {
      printf ("%s\t%.2lf\t%.2lf\t%.2lf\n", 
              record[n].name, record[n].test,
              record[n].quiz, record[n].English);
      ++n;
    }
  printf("%d records processed.\n", n);
  printf("return code from last fscanf() call: %d\n", ret);

  return 0;
}

and running it in a directory containing format1.dat and format2.dat from post #1 in this thread as follows:
Code:
$ ./a.out < *1.dat
Zacker	244.00	244.00	542.00
Lee	265.00	265.00	456.00
Walter	235.00	235.00	212.00
Zena	323.00	215.45	332.50
4 records processed.
return code from last fscanf() call: -1
$ ./a.out < *2.dat
Zacker	244.00	244.00	542.00
Lee	265.00	265.00	456.00
Walter	235.00	235.00	212.00
Zena	323.00	215.45	332.50
Mira	285.00	285.00	415.00
5 records processed.
return code from last fscanf() call: -1
$ cat *.dat | ./a.out
Zacker	244.00	244.00	542.00
Lee	265.00	265.00	456.00
Walter	235.00	235.00	212.00
Zena	323.00	215.45	332.50
Zacker	244.00	244.00	542.00
Lee	265.00	265.00	456.00
Walter	235.00	235.00	212.00
7 records processed.
return code from last fscanf() call: 4

This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Read from data file

Hi, I have a data file formatted like this: Ex: Mike 3434 Jack 481 Peter 12 Alan 926 I want to get this data into 2 variables: "Names" and "Numbers" that I can using one "for" loop to get the value as Names and Numbers Like this: for i in 0 1 2 3 do echo $Names echo... (12 Replies)
Discussion started by: fongthai
12 Replies

2. UNIX for Advanced & Expert Users

how to read the data from an excel sheet and use those data as variable in the unix c

I have 3 columns in an excel sheet. c1 c2 c3 EIP_ACCOUNT SMALL_TS_01 select A.* from acc; All the above 3 col shoud be passed a variable in the unix code. 1.How to read an excel file 2.How to pass these data as variable to the unic script (1 Reply)
Discussion started by: Anne Grace
1 Replies

3. Programming

writing binary/struct data to file

I am trying to write binary data to a file. My program below: #include <stdlib.h> #include <stdio.h> struct tinner { int j; int k; }; struct touter { int i; struct tinner *inner; }; int main() { struct touter data; data.i = 10; struct tinner... (4 Replies)
Discussion started by: radiatejava
4 Replies

4. UNIX for Dummies Questions & Answers

How to access a struct within a struct?

Can someone tell me how to do this? Just a thought that entered my mind when learning about structs. First thought was: struct one { struct two; } struct two { three; } one->two->three would this be how you would access "three"? (1 Reply)
Discussion started by: unbelievable21
1 Replies

5. Shell Programming and Scripting

Extracting data from a log file with date formats

Hello, I have a log file for the year, which contains lines starting with the data in the format of YYYY-MM-DD. I need to get all the lines that contain the DD being 04, how would I do this? I tried using grep "*-*04" but it didn't work. Any quick one liners I should know about? Thank you. (2 Replies)
Discussion started by: cpickering
2 Replies

6. HP-UX

struct utsname throwing error : Value too large to be stored in data type

Hi, I am trying to fetch sysname and nodename using struct utsname. I have two HP-UX servers on with 10 characters and other with 13 characters host name. For the first one I am getting truncated 8 characters as output but for the second one i am getting "Value too large to be stored in data type"... (1 Reply)
Discussion started by: shivarajbm
1 Replies

7. Programming

Storing C++-struct in file - problem when adding new item in struct

Hi, I have received an application that stores some properties in a file. The existing struct looks like this: struct TData { UINT uSizeIncludingStrings; // copy of Telnet data struct UINT uSize; // basic properties: TCHAR szHost; //defined in Sshconfig UINT iPortNr; TCHAR... (2 Replies)
Discussion started by: Powerponken
2 Replies

8. Shell Programming and Scripting

Help to get correct data using awk

I have this input.|user1 |10.10.10.10 |23|046|1726 (212) |0 |user2 |10.10.10.11 |23|046|43 (17) |0 |test |10.10.10.12 |23|046|45 (10) |0 |test1 |10.10.10.13 |23|046|89 (32) |0 I need to get the data for a user like thisuser1 1726 user2 43 test 45 test1 89... (11 Replies)
Discussion started by: Jotne
11 Replies

9. Shell Programming and Scripting

Shell script to correct the data

Hi, I have below data in my flat file.I would like to remove the quotes and comma necessary from the data.Below is the details I would like to have in my output. Could anybody help me providing the Unix shell script for this. Input : ABC,ABC,10/15/2012,"47,936,164.567 ","1,036,997.453... (2 Replies)
Discussion started by: sonu_pal
2 Replies

10. Shell Programming and Scripting

In PErl script: need to read the data one file and generate multiple files based on the data

We have the data looks like below in a log file. I want to generat files based on the string between two hash(#) symbol like below Source: #ext1#test1.tale2 drop #ext1#test11.tale21 drop #ext1#test123.tale21 drop #ext2#test1.tale21 drop #ext2#test12.tale21 drop #ext3#test11.tale21 drop... (5 Replies)
Discussion started by: Sanjeev G
5 Replies
iconv_8859-1(5) 					Standards, Environments, and Macros					   iconv_8859-1(5)

NAME
iconv_8859-1 - code set conversion tables for ISO 8859-1 (Latin 1) DESCRIPTION
The following code set conversions are supported: +--------------------------------------------------------------------+ | Code Set Conversions Supported | +--------------+--------+--------------+--------+--------------------+ | Code |Symbol |Target Code |Symbol | Target Output | +--------------+--------+--------------+--------+--------------------+ |ISO 8859-1 |8859 |ISO 646 |646 | 7 bit ASCII | +--------------+--------+--------------+--------+--------------------+ |ISO 8859-1 |8859 |ISO 646de |646de | German | +--------------+--------+--------------+--------+--------------------+ |ISO 8859-1 |8859 |ISO 646da |646da | Danish | +--------------+--------+--------------+--------+--------------------+ |ISO 8859-1 |8859 |ISO 646en |646en | English ASCII | +--------------+--------+--------------+--------+--------------------+ |ISO 8859-1 |8859 |ISO 646es |646es | Spanish | +--------------+--------+--------------+--------+--------------------+ |ISO 8859-1 |8859 |ISO 646fr |646fr | French | +--------------+--------+--------------+--------+--------------------+ |ISO 8859-1 |8859 |ISO 646it |646it | Italian | +--------------+--------+--------------+--------+--------------------+ |ISO 8859-1 |8859 |ISO 646sv |646sv | Swedish | +--------------+--------+--------------+--------+--------------------+ CONVERSIONS
The conversions are performed according to the following tables. All values in the tables are given in octal. ISO 8859-1 to ISO 646 (7-bit ASCII) For the conversion of ISO 8859-1 to ISO 646, all characters not in the following table are mapped unchanged. Converted to Underscore '_' (137) --------------------------------- 200 201 202 203 204 205 206 207 210 211 212 213 214 215 216 217 220 221 222 223 224 225 226 227 230 231 232 233 234 235 236 237 240 241 242 243 244 245 246 247 250 251 252 253 254 255 256 257 260 261 262 263 264 265 266 267 270 271 272 273 274 275 276 277 300 301 302 303 304 305 306 307 310 311 312 313 314 315 316 317 320 321 322 323 324 325 326 327 330 331 332 333 334 335 336 337 340 341 342 343 344 345 346 347 350 351 352 353 354 355 356 357 360 361 362 363 364 365 366 367 370 371 372 373 374 375 376 377 ISO 8859-1 to ISO 646de (GERMAN) For the conversion of ISO 8859-1 to ISO 646de, all characters not in the following tables are mapped unchanged. +-----------------------------------------------------------------+ | | Conversions|Performed | | | ISO 8859-1 | ISO 646de | ISO 8859-1 | ISO 646de | |247 | 100 |337 |176 | |304 | 133 |344 |173 | |326 | 134 |366 |174 | |334 | 135 |374 |175 | +---------------+----------------+----------------+---------------+ Converted to Underscore '_' (137) --------------------------------- 100 133 134 135 173 174 175 176 200 201 202 203 204 205 206 207 210 211 212 213 214 215 216 217 220 221 222 223 224 225 226 227 230 231 232 233 234 235 236 237 240 241 242 243 244 245 246 250 251 252 253 254 255 256 257 260 261 262 263 264 265 266 267 270 271 272 273 274 275 276 277 300 301 302 303 305 306 307 310 311 312 313 314 315 316 317 320 321 322 323 324 325 327 330 331 332 333 335 336 337 340 341 342 343 345 346 347 350 351 352 353 354 355 356 357 360 361 362 363 364 365 367 370 371 372 373 375 376 377 ISO 8859-1 to ISO 646da (DANISH) For the conversion of ISO 8859-1 to ISO 646da, all characters not in the following tables are mapped unchanged. +-----------------------------------------------------------------+ | Conversions Performed | +---------------+----------------+----------------+---------------+ | ISO 8859-1 | ISO 646da | ISO 8859-1 | ISO | +---------------+----------------+----------------+---------------+ |646da | | | | +---------------+----------------+----------------+---------------+ |305 | 135 |345 |175 | +---------------+----------------+----------------+---------------+ |306 | 133 |346 |173 | +---------------+----------------+----------------+---------------+ |330 | 134 |370 |174 | +---------------+----------------+----------------+---------------+ Converted to Underscore '_' (137) --------------------------------- 133 134 135 173 174 175 200 201 202 203 204 205 206 207 210 211 212 213 214 215 216 217 220 221 222 223 224 225 226 227 230 231 232 233 234 235 236 237 240 241 242 243 244 245 246 247 250 251 252 253 254 255 256 257 260 261 262 263 264 265 266 267 270 271 272 273 274 275 276 277 300 301 302 303 304 307 310 311 312 313 314 315 316 317 320 321 322 323 324 325 326 327 331 332 333 334 335 336 337 340 341 342 343 344 347 350 351 352 353 354 355 356 357 360 361 362 363 364 365 366 367 371 372 373 374 376 377 ISO 8859-1 to ISO 646en (ENGLISH ASCII) For the conversion of ISO 8859-1 to ISO 646en, all characters not in the following tables are mapped unchanged. +-----------------------------------------------------------+ | Conversions Performed | +-----------------------------+-----------------------------+ | ISO 8859-1 | ISO 646en | +-----------------------------+-----------------------------+ |243 |043 | +-----------------------------+-----------------------------+ Converted to Underscore '_' (137) --------------------------------- 043 200 201 202 203 204 205 206 207 210 211 212 213 214 215 216 217 220 221 222 223 224 225 226 227 230 231 232 233 234 235 236 237 240 241 242 244 245 246 247 250 251 252 253 254 255 256 257 260 261 262 263 264 265 266 267 270 271 272 273 274 275 276 277 300 301 302 303 304 305 306 307 310 311 312 313 314 315 316 317 320 321 322 323 324 325 326 327 330 331 332 333 334 335 336 337 340 341 342 343 344 345 346 347 350 351 352 353 354 355 356 357 360 361 362 363 364 365 366 367 370 371 372 373 374 375 376 377 ISO 8859-1 to ISO 646fr (FRENCH) For the conversion of ISO 8859-1 to ISO 646fr, all characters not in the following tables are mapped unchanged. +-----------------------------------------------------------------+ | | Conversions|Performed | | | ISO 8859-1 | ISO 646fr | ISO 8859-1 | ISO 646fr | |243 | 043 |347 |134 | |247 | 135 |350 |175 | |250 | 176 |351 |173 | |260 | 133 |371 |174 | |340 | 100 | | | +---------------+----------------+----------------+---------------+ Converted to Underscore '_' (137) --------------------------------- 043 100 133 134 135 173 174 175 176 200 201 202 203 204 205 206 207 210 211 212 213 214 215 216 217 220 221 222 223 224 225 226 227 230 231 232 233 234 235 236 237 240 241 242 244 245 246 251 252 253 254 255 256 257 261 262 263 264 265 266 267 270 271 272 273 274 275 276 277 300 301 302 303 304 305 306 307 310 311 312 313 314 315 316 317 320 321 322 323 324 325 326 327 330 331 332 333 334 335 336 337 341 342 343 344 345 346 352 353 354 355 356 357 360 361 362 363 364 365 366 367 370 372 373 374 375 376 377 ISO 8859-1 to ISO 646it (ITALIAN) For the conversion of ISO 8859-1 to ISO 646it, all characters not in the following tables are mapped unchanged. +-----------------------------------------------------------------+ | | Conversions|Performed | | | ISO 8859-1 | ISO 646it | ISO 8859-1 | ISO 646it | |243 | 043 |350 |175 | |247 | 100 |351 |135 | |260 | 133 |354 |176 | |340 | 173 |362 |174 | |347 | 134 |371 |140 | +---------------+----------------+----------------+---------------+ Converted to Underscore '_' (137) --------------------------------- 043 100 133 134 135 173 174 175 176 200 201 202 203 204 205 206 207 210 211 212 213 214 215 216 217 220 221 222 223 224 225 226 227 230 231 232 233 234 235 236 237 240 241 242 244 245 246 250 251 252 253 254 255 256 257 261 262 263 264 265 266 267 270 271 272 273 274 275 276 277 300 301 302 303 304 305 306 307 310 311 312 313 314 315 316 317 320 321 322 323 324 325 326 327 330 331 332 333 334 335 336 337 341 342 343 344 345 346 352 353 354 355 356 357 360 361 362 363 364 365 366 367 370 372 373 374 375 376 377 ISO 8859-1 to ISO 646es (SPANISH) For the conversion of ISO 8859-1 to ISO 646es, all characters not in the following tables are mapped unchanged. +-----------------------------------------------------------------+ | | Conversions|Performed | | | ISO 8859-1 | ISO 646es | ISO 8859-1 | ISO 646es | |241 | 133 |321 |134 | |247 | 100 |347 |175 | |260 | 173 |361 |174 | |277 | 135 | | | +---------------+----------------+----------------+---------------+ Converted to Underscore '_' (137) --------------------------------- 100 133 134 135 173 174 175 200 201 202 203 204 205 206 207 210 211 212 213 214 215 216 217 220 221 222 223 224 225 226 227 230 231 232 233 234 235 236 237 240 242 243 244 245 246 250 251 252 253 254 255 256 257 261 262 263 264 265 266 267 270 271 272 273 274 275 276 300 301 302 303 304 305 306 307 310 311 312 313 314 315 316 317 320 322 323 324 325 326 327 330 331 332 333 334 335 336 337 340 341 342 343 344 345 346 350 351 352 353 354 355 356 357 360 362 363 364 365 366 367 370 371 372 373 374 375 376 377 ISO 8859-1 to ISO 646sv (SWEDISH) For the conversion of ISO 8859-1 to ISO 646sv, all characters not in the following tables are mapped unchanged. +-----------------------------------------------------------------+ | | Conversions|Performed | | | ISO 8859-1 | ISO 646sv | ISO 8859-1 | ISO 646sv | |304 | 133 |344 |173 | |305 | 135 |345 |175 | |311 | 100 |351 |140 | |326 | 134 |366 |174 | |334 | 136 |374 |176 | +---------------+----------------+----------------+---------------+ Converted to Underscore '_' (137) --------------------------------- 100 133 134 135 136 140 173 174 175 176 200 201 202 203 204 205 206 207 210 211 212 213 214 215 216 217 220 221 222 223 224 225 226 227 230 231 232 233 234 235 236 237 240 241 242 243 244 245 246 247 250 251 252 253 254 255 256 257 260 261 262 263 264 265 266 267 270 271 272 273 274 275 276 277 300 301 302 303 306 307 310 312 313 314 315 316 317 320 321 322 323 324 325 327 330 331 332 333 335 336 337 340 341 342 343 346 347 350 352 353 354 355 356 357 360 361 362 363 364 365 367 370 371 372 373 375 376 377 FILES
/usr/lib/iconv/*.so conversion modules /usr/lib/iconv/*.t conversion tables /usr/lib/iconv/iconv_data list of conversions supported by conversion tables SEE ALSO
iconv(1), iconv(3C), iconv(5) SunOS 5.10 28 Apr 1997 iconv_8859-1(5)
All times are GMT -4. The time now is 05:21 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy