Получить значения int из строки C - PullRequest
0 голосов
/ 28 марта 2019

Моя программа получает строку в следующем формате: char* s = "(char)=(int1)+(int2)" как char* s = "x=11+12" и мне нужно получить два целых в две переменные типа var1 и var2.

Я перебирал строку, но она не работает с числами больше 9.

Пример:

char* buffer = NULL;
size_t buffsize = 32;
ssize_t aux;

FILE *fp;
fp = fopen(argv[1], "r");
if (fp == NULL) {
  printf("FILE ERROR\n");
  return 0;
}
aux = getline(&buffer, &buffersize, fp);
//aux = "x=2+10"

fclose(fp);

Я ожидаю var1 = 2; var2 = 10

1 Ответ

0 голосов
/ 28 марта 2019

Здесь простое решение с использованием функции sscanf.

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

int main( int argc,char *argv[])
{
   int var1,var2;
   char *buffer=NULL,c;
   size_t bufsize = 32;
   size_t characters;
   FILE *fp;
   if( argc != 2)
      return -1;
   buffer = (char *)malloc(bufsize * sizeof(char));
   fp = fopen(argv[1],"r");
   if( fp == NULL)
     return -2;

   characters = getline(&buffer,&bufsize,fp);
   buffer[characters-1]='\0';
   sscanf( buffer, "aux = \"%c=%d+%d\"",&c,&var1, &var2 );
   printf("var1 = %d , var2 = %d \n",var1,var2);
   return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...