将 ASCII 小数缓冲区转换为 C 中的字符串或字符数组

Convert buffer of ASCII Decimals to a string or array of chars in C

我正在尝试打开并读取一个 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++;
         }


类似的东西。

您可能想看看 strtok() function。它根据您设置的分隔符将字符串分隔为不同的标记,returns 指向该字符串的指针,您可能希望将其与其他字符串进行比较。

它是您分隔和处理标准化分隔信息的好工具。