Как преобразовать строку в int в Pic контроллера - PullRequest
0 голосов
/ 06 июня 2019

Как преобразовать строку в int для отображения на ЖК-дисплее. Я пытался использовать itoa, не поддерживается компилятором даже после добавления <stdlib.h>.

Вот мой код:

Ответы [ 3 ]

1 голос
/ 08 июня 2019

Кулак, вы можете легко показать строку на ЖК-дисплее без каких-либо преобразований.Во-вторых, я проверил itoa в MplabX, он работал нормально !!

В целом все работает отлично:

int toString(char a[]) {
  int c, sign, offset, n;

  if (a[0] == '-') {  // Handle negative integers
    sign = -1;
  }

  if (sign == -1) {  // Set starting position to convert
    offset = 1;
  }
  else {
    offset = 0;
  }

  n = 0;

  for (c = offset; a[c] != '\0'; c++) {
    n = n * 10 + a[c] - '0';
  }

  if (sign == -1) {
    n = -n;
  }

  return n;
}
1 голос
/ 06 июня 2019
#include <stdio.h>
#include <string.h>    

int stringToInt(char * s){
    int res = 0;
    for(size_t i=0; i<strlen(s); i++)
        res = (res * 10) + (s[i] - '0');
    return res;
}

int main(void){
    printf("%d\n", stringToInt("256"));
    return(0);
}

Это не будет работать с числом, превышающим то, что может хранить int.Или просто используйте strltol / strtoul / atoi из stdlib.h.

0 голосов
/ 04 июля 2019

iota поддерживается в компиляторе xc.
Вы должны были выполнить следующие настройки в MPLABx:

Свойства проекта / Глобальные параметры и затем отмените выбор Использовать устаревшую библиотеку libc

...