Преобразовать буфер десятичных чисел ASCII в строку или массив символов в C - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь открыть и прочитать файл CSV, содержащий данные, необходимые для настройки возможностей. Мне нужно установить возможности на основе того, какие возможности считываются из файла CSV. Я открываю файл и читаю данные в буфер. Вот где я застрял. Теперь я хочу использовать эти данные в буфере для сравнения строк или символов, чтобы ввести операторы if else. Например, мой CSV-файл выглядит следующим образом:

1000, CAP_SETPCAP, CAP_NET_RAW, CAP_SYS_ADMIN

Первое число - это euid, а остальные - возможности, которые я хочу установить для процесса. Когда я читаю это в буфер, буфер содержит десятичные числа ASCII. Я хочу иметь возможность преобразовать буфер в строку или массив, чтобы я мог сделать сравнения.

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

#define BUFFER_SIZE 1024

int main(int argc, char *argv[]){

         FILE *fp;
         fp = fopen("csvtest.csv", "r");
         char buff[BUFFER_SIZE];
         char *newCaps[] = {};

         if(!fp){
             printf("did not open\n");
         }

         fgets(buff, 1024, fp);

         int i = 0;
         //I don't know how to just get the size of what was put into the buffer
         while(i < size_of_buffer){
              //these are the comparisons I'd like to make, I know this isn't right
              if(buffer[1000] == "1000"){
                    printf("This is the correct euid\n");
                    newCaps[0] = buffer[CAP_SETPCAP];
                    newCaps[1] = buffer[CAP_NET_RAW];
                    newCaps[2] = buffer[CAP_SYS_ADMIN];
              }
           i++;
         }


Что-то в этом роде.

1 Ответ

0 голосов
/ 29 апреля 2020

Возможно, вы захотите взглянуть на функцию strtok() . Он разделяет строку в разных токенах в соответствии с заданным вами разделителем и возвращает указатель на эту строку, который вы можете сравнить с другой строкой.

Это хороший инструмент для разделения и обработки стандартизированной разделенной информации.

...