Как я могу читать цифры только из массива, который имеет цифры и буквы, используя C? - PullRequest
0 голосов
/ 28 марта 2012

Я новичок здесь. У меня есть текстовый файл, который читает:

6
<cr>
R 0
R 1
R 4
R 36
R 0
R 4

/ отредактировано / Это то, что у меня есть. Я хочу прочитать каждую строку в массив, чтобы я мог преобразовать этот массив в целое число, чтобы я мог печатать только те строки, которые мне нужны позже.

    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>


    int main()
    {
        FILE *fr;   /*declares file pointer*/
        int i, j, num[32];
        char input_file[32], line[32];

        fr = fopen(input_file, "r");
        if(fr != NULL){

            while(fgets(line, sizeof(line), fr) != NULL){
                for(i=0;i<strlen(line);i++){
                    if(line[i] >= '0' && line[i] <= '9'){
                        num[i] = line[i] - '0';
                    }
                i++;
                                printf("%d\n", num[i]);
            }
            fclose(fr);
        }
        else{
            perror(input_file);
        }
    }

Я не получаю никаких ошибок, но это неправильно печатает; это то, что он печатает:

-370086
-370086
-370086
-370086
-370086
-370086
-370086
-370086

1 Ответ

3 голосов
/ 28 марта 2012

Вы можете использовать одинарные кавычки вокруг символа, чтобы получить его действительное значение байта, поэтому вы можете использовать его, чтобы проверить, находится ли символ в требуемом диапазоне.

Вместо того, чтобы использовать strcpy, вы хотите запуститьчерез символы в вашей строке по одному, принимая те, которые вы хотите, что-то вроде этого:

for(i = 0; i < strlen(line); i++)
{
    if(line[i] >= '0' && line[i] <= '9')
    {
        // this is a good character, add it to the array in the appropriate place
    }
}

Преобразование в целое число - это то, что вы должны быть в состоянии отработать, если учесть, что '0'это значение 48 в десятичном виде и посмотрите на таблицу здесь .

Обратите внимание, это немного похоже на домашнюю работу, поэтому мой ответ не дает вам всего, что вам нужно - надеюсь, это даст вамчто вам нужно решить, хотя!Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...