C прочитать значение из файла конфигурации - PullRequest
0 голосов
/ 15 марта 2012

Мне нужна помощь с чтением порта из файла конфигурации. Линия выглядит так: PORT = 8888

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


int main(int ac, char **av)
{

        char buf[256];
        FILE *file = NULL;
        char hostlist[256] = "";
        int port = 8080; /* default not from config */
        int i = 0;
  // open file
  // some feof code   

[..]

        strcpy(hostlist,buf);
        if (strstr(buf,"PORT")) {      /* buf[0-3] = */
                printf("%c\n",buf[5]); /* PORT=8888 */
                printf("%c\n",buf[6]);
                printf("%c\n",buf[7]);
                printf("%c\n",buf[8]);

Это работает как ожидалось ^^ Но при попытке скопировать в буфер я ничего не получаю порт или я получаю порт по умолчанию.

                for(i=4;i<9;i++) {
                while (buf[i] != '\n') {
                port += buf[i++];
                printf("buf:%c\n",buf[i]);
                }
                }
                printf("port=%d\n",port);
        }
        fclose(file);
}

Ответы [ 2 ]

8 голосов
/ 15 марта 2012

Вы, вероятно, должны просто использовать fscanf():

if(fscanf(file, "PORT=%d", &port) == 1)
{
  print("Found port number in config, it's %d\n", port);
}
1 голос
/ 15 марта 2012

Я не совсем понимаю вопрос, но я предполагаю, что вы собираетесь сделать что-то вроде этого:

char* ptr_port = strstr(buf,"PORT=");
if(ptr_port != NULL)
{
  int port = get_port(ptr_port);

  for(int i=0; i<4; i++)
  {
    printf("%c", ptr_port[i]);
  }       
  printf("\n");
  printf("port=%d\n", port);
}


#include <ctype.h>
int get_port (const char* str)
{
  int port = 0;

  for(int i=0; str[i]!='\0'; i++)
  {
    if(isdigit(str[i]))
    {
      port = port*10 + str[i] - '0';
    }
  }

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