我不明白如何编译它。
我没有把我在这个库中创建的所有函数都放在一起,因为它们都正常工作,这是我第一次使用math.h
到目前为止,我已经这样编译而没有问题:
gcc -c -g f.c
gcc -c -g main.c
gcc -o main main.o f.o
我试图插入-lm
,但我不知道如何以及在哪里投放。
//头
#include<math.h>
#define MAX 5
typedef enum {FALSE, TRUE} bool;
typedef enum {ERROR=-1, OK=1} status;
status parse_int(char s[], int *val);
//功能
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
#include"f.h"
status parse_int(char s[], int *val) {
int l, val_convertito = 0, val_momentaneo = 0;
for(l = 0; s[l] != '\0'; l++);
for(int i = 0; s[i] != '\0'; i++) {
if(s[i] >= '0' && s[i] <= '9') {
val_momentaneo = ((int) (s[i]-48)) * ((int)exp10((double)l--));
val_convertito += val_momentaneo;
*val = val_convertito;
} else return ERROR;
}
return OK;
}
//主
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
#include"f.h"
int main() {
int val_con, *val, ls;
char s_int[ls];
printf("Inserisci la lunghezza della stringa: ");
scanf("%d", &ls);
printf("\n");
printf("Inserisci l'intero da convertire: \n");
scanf("%s", s_int);
val = &val_con;
status F8 = parse_int(s_int, val);
switch(F8) {
case OK: printf("Valore convertito %d\n", val_con);
break;
case ERROR: printf("E' presente un carattere non numerico.\n");
break;
}
}
答案 0 :(得分:0)
您的功能可以删除到:
int str_to_int(const char* value)
{
int res = 0;
while (*value)
{
if (!isdigit(*value)) return -1;
res *= 10;
res += *value++ - '0';
}
return res;
}
status str_to_int1(const char* value, int *res)
{
*res = 0;
while (*value)
{
if (!isdigit(*value)) return ERROR;
*res *= 10;
*res += *value++ - '0';
}
return OK;
}