используя 2 fscanf последовательно - PullRequest
0 голосов
/ 10 июня 2019

Я хочу прочитать из следующего файла, в C:

пример file.txt :

ab cd efg mnop

1234 123 12 21

Я хочу прочитать и сохранить разделенное пространствослова в отдельных переменных.Я знаю, что могу использовать:

fscanf(fp, "%s %s %s.....", var1, var2, varN);

Но мне не нужно это fscanf(fp, "%s %s %s.....", var1,var2,varN); для моего кода (для университета).

Фрагмент кода (для университета), где янеобходимо использовать fscanf s последовательно:

                   ......
while(!feof(fp)) {
    fscanf(fp,"%2s",posRobot);

    if(!strcmp(posRobot, "R1") == 0){
        fscanf(fp, "%4s", pos_temp);
            posR1_temp=0;
                   .......

Но это не работает так, как задумано.Код, к которому я обращаюсь за помощью:

int main()
{
    FILE *fp;
    char var1[2];
    char var2[2];
    char var2[3];
    char var2[4];
    ....


    fp = fopen("file.txt", "r");
    if(fp == NULL) {
        printf("Error opening file!"); 
        exit(0);    
    }

    //now using fscanf, trying to read the first two characters.
    fscanf(fp,"%s",var1);

    //test to see if i read it successfully
    printf("\n1st 'fscanf' : %2s",var1);

    //now using fscanf again, to read the next string.
    fscanf(fp,"%s",var2);

    //test to see if i read it successfully
    printf("\n1st 'fscanf' : %2s",var2);

Ошибка: она успешно компилируется, но ничего не отображается в окне вывода.

1 Ответ

0 голосов
/ 10 июня 2019

Большое спасибо, ребята, очень быстрые ответы. Проблема заключалась в том, что я не выделил другое «пространство» для «NULL CHARACTER»

рабочий код:

int main()
{
FILE *fp;
char xxx[3];
char bb[3];
char cc[4];
char aa[5];
char hh[4];

fp=fopen("fscanf.txt", "r");
if(fp==NULL){
    printf("Error opening file!"); 
    exit(0);    
    }


fscanf(fp,"%s",xxx);
printf("\n1st 'fscanf' : %3s",xxx);

fscanf(fp,"%s",bb);
printf("\n2nd 'fscanf' : %3s",bb);

fscanf(fp,"%s",cc);
printf("\n3rd 'fscanf' : %4s",cc);

fscanf(fp,"%s",aa);
printf("\n4th 'fscanf' : %5s",aa);

fscanf(fp,"%s",hh);
printf("\n5th 'fscanf' : %4s",cc);

return 0;

}

...