Sponsored Content
Top Forums Programming Format specifier for sscanf() in C Post 303040775 by yifangt on Wednesday 6th of November 2019 01:45:08 PM
Old 11-06-2019
last variable gets printed twice

Thanks!
Change the char array size ID[12], str1[12] resolved the ID bug!

Last bug(hopefully!): the last variable is printed twice, that I really could not understand.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// pratice with fgets() + sscanf() to read in multiple lines into struct
typedef struct {
    char ID[12];
   /*omit other members for this post */
    char Indel_SNPMNPRatio[8];
} RECORD;

int main (int argc, char *argv[])
{
    char line[512];      //for row read from file
    char name[32];      //1st part (key part) parsed from each line[]
    char str1[12];       //2nd part (value part) parsed from each line[]

    FILE* fPtr = fopen(argv[1], "r");
    RECORD record[16];            //test file may have 288 ~ 306 rows including blank lines
    static int i = -1;               //initialize counter

    while (fgets(line, sizeof(line), fPtr) != NULL) {
        str1[0]='0';
        if ( line[0] == '\n' ) continue;        //skip "blank" lines with e.g. empty or invisible spaces(to be improved!).

        sscanf(line, "%[^:] : %s", name, str1);   
        if (strstr(name, "Sample Name") != NULL) {
            i++;
            strcpy(record[i].ID, str1);
            printf("\n");
        }
        printf("%s ", str1);
    }

    puts("\nEND");      //For debug.
    fclose(fPtr);
    return 0;
}

./prog vcfstats.txt
Code:
sample1 91 1 5 2 0 1 44 1.74 2.96 2.79 - 4.00 - - 2.50 0.08 0.08 
sample2 73 2 2 3 0 1 63 1.87 2.59 2.50 1.00 - - - 0.67 0.07 0.07 
...... 
sample15 87 1 4 2 0 1 42 1.74 2.96 2.79 - 2.00 - - 1.25 0.08 0.08 
sample16 83 1 2 3 0 4 65 1.87 2.59 2.50 1.00 - - - 0.67 0.07 0.07 
END

I want to ensure all the details of the bugs.
How come the last variable gets printed twice?
Thanks again.

Last edited by yifangt; 11-06-2019 at 04:30 PM..
 

10 More Discussions You Might Find Interesting

1. Programming

sscanf function is failing

Please delete this thread. (0 Replies)
Discussion started by: jxh461
0 Replies

2. Programming

sscanf !!

I have a string Form this string, I want to extract I am unable to do that with sscanf because of the space between the words. What else can I use? #include <stdio.h> char buf_2; int main() { char *buf_1 = "\\\\?\\whats going on"; sscanf(buf_1,... (4 Replies)
Discussion started by: the_learner
4 Replies

3. Shell Programming and Scripting

awk printf formatting using string format specifier.

Hi all, My simple AWK code does C = A - B If C can be a negative number, how awk printf formating handles it using string format specifier. Thanks in advance Kanu :confused: (9 Replies)
Discussion started by: kanu_pathak
9 Replies

4. Programming

help with sscanf()!

Hi everybody, i need help with this function, i'm programming in CGI with C and i can't make this work. QUERY_STRING is something like: user=MYUSER&pass=MYPASS So, what i want is to store the strings containing the username and the password into str1 and str2 respetively, here's the... (4 Replies)
Discussion started by: Zykl0n-B
4 Replies

5. Programming

help with sscanf

I need to match a float inside a very long string (about 5000 chars) with sscanf. (I trimmed the string in this example.) I can't seem to match all the chars that come before and after the float. int main(void) { char A = ""; strcat(A, " hello world! WORD' name='5.3498' hello world! ... (1 Reply)
Discussion started by: limmer
1 Replies

6. Programming

Help with sscanf

sscanf does not stop at the first "&". How can I extract "doe" ? char A = "name=john&last=doe&job=vacant&"; char B = "last"; char C = ""; char *POINTER = strstr(A, B); sscanf(POINTER + strlen(B), "=%s%*", C); printf("%s\n", C); // doe&job=vacant& (2 Replies)
Discussion started by: limmer
2 Replies

7. Programming

using sscanf

How can I separetely extract the string and int after "dribble" ? (sscanf must limit TEXT to 9 chars to avoid buffer overflows.) How come this code does not work with "dribbletext08" but does with "dribbletext05" ? int main(void) { char TEXT = ""; int NUMBER = 0; ... (2 Replies)
Discussion started by: cyler
2 Replies

8. Shell Programming and Scripting

Retaining the Unix CSV format in Excel format while exporting

Hi All, I have created a Unix Shell script whch creates a *.csv file and export it to Excel. The problem i am facing is that Users wants one of the AMOUNT field in comma separted values. Example : if the Amount has the value as 3000000 User wants to be in 3,000,000 format. This Amount format... (2 Replies)
Discussion started by: rawat_me01
2 Replies

9. Programming

sscanf() weired behaviour

Hi with the following code int a, b; while ((n = readline (connfd, buf, sizeof(buf)-1)) > 0) { buf = '\0'; if (sscanf(buf,"%d %d",&a,&b) != 2) snprintf (buf, sizeof(buf), "data error\r\n"); else { printf("\nRecvd %d and %d",a,b); ... (1 Reply)
Discussion started by: princebadshah
1 Replies

10. Shell Programming and Scripting

Need script for transferring bulk files from one format to text format

"Help Me" Need script for transferring bulk files from one format to text format in a unix server. Please suggest (2 Replies)
Discussion started by: Kranthi Kumar
2 Replies
mencal(1)								 1								 mencal(1)

NAME
mencal - menstruation calendar SYNOPSIS
mencal [options] [file1 file2 ... -c CONF1 -c CONF2 ...] DESCRIPTION
Display options: -m, --monday draw monday as first weekday (sunday is default) -1 current month (default) -3 previous, current and next month -y [YYYY] all-year calendar (default YYYY is current year) -q, --quiet no top information will be printed -n, --nocolor noncolored output -i, --icolor COLOR intersection color (default red) available colors: red, green, blue, yellow, violet, cyan, shiny, bold mencal configuration: -c, --config s=[YYYY]MMDD,l=LL,d=DD,n=NAME,f=FILE,c=COLOR The second argument is a comma separated list of options. No spaces are allowed in this list. If no name is specified, 'Unknown' is used. Various -c options or filenames can be set. s,start=[YYYY]MMDD start day of period (default current day) l,length=LL length of period in days (default 28) d,duration=D duration of menstruation in days (default 4) n,name=NAME name of subject f,file=FILE filename to save configuration to (see section FILES) only menstruation related variables will be saved c,color=COLOR color used for menstruation days available colors: red, green, blue, yellow, violet, cyan, shiny, bold default color is red, with '-n' switch color settings are ignored Info options: -h, --help print help -V, --version print version information FILES
: $HOME/.mencalrc - the default configuration file that is automatically loaded AUTHOR
: (C) 2002 C. McCohy e-mail: <mccohy@kyberdigi.cz> Word-Wide-Web: http://www.kyberdigi.cz/projects/mencal/english This manual page was written for the Debian GNU/Linux distribution because the original program does not have a manual page (but may be used by others). HISTORY
22 March 2002 - Originally written by Amaya Rodrigo <amaya@debian.org>. 24 Apr 2002 - New manpage contributed by Pablo S. Torralba <psanchez@skyrealms.org>. Amaya Rodrigo <amaya@debian.org> is now responsible for developing and maintaining this manual page. Comments and suggestions are greatly wellcome. mencal Menstruation calendar mencal(1)
All times are GMT -4. The time now is 01:56 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy