Sara
Sara

Reputation: 121

Strings not being read correctly from file using fscanf

I'm using fscanf to take input of a specific format. The line I'm trying to read is:

A B C D E F G H I J K x

My fscanf code looks like:

fscanf(circuit, "%s %s %s %s %s %s %s %s %s %s %s %c ",
       str1, str2, str3, str4, str5, str6, str7, str8, str9, str10, str11, &a);

In this example "circuit" is the name of the file. For some reason, "K" and 'x' get read correctly (as str11 and a respectively), but the rest of the characters do not get read correctly. The reason I've opted for the string identifier vs the char identifier is because the line may potentially contain single digit integers. In the case of an integer I just convert the string to an integer in a later code block. Why isn't this working correctly?

Upvotes: 0

Views: 521

Answers (1)

Confiz-3C
Confiz-3C

Reputation: 71

I have this code working on my machine.

#include <stdio.h>
#include <stdlib.h>

//#define _CRT_SECURE_NO_WARNINGS

int main()
{
    char str1[2], str2[2], str3[2], str4[2], str5[2], str6[2], str7[2], str8[2], str9[2], str10[2], str11[2];
    char a;
    FILE * fp;
    fp = fopen("test.txt", "w+");
    fputs("A B C D E F G H I J K x", fp);

    rewind(fp);
    fscanf(fp, "%s %s %s %s %s %s %s %s %s %s %s %c ", str1, str2, str3, str4, str5, str6, str7, str8, str9, str10, str11, &a);

    printf("Read String1 |%s|\n", str1);
    printf("Read String2 |%s|\n", str2);
    printf("Read String3 |%s|\n", str3);
    printf("Read Character |%c|\n", a);

    fclose(fp);

    return(0);
}

Output :

Read String1 |A|
Read String2 |B|
Read String3 |C|
Read Character |x|

Upvotes: 0

Related Questions