#include <stdio.h>
int strtoi(const char *nptr){
int num = 0, sign = 1;
if(*nptr == '+'){
sign = 1;
*nptr++;
}else if(*nptr == '-'){
sign = -1;
*nptr++;
}
while(true){
num += *nptr - '0';
*nptr++;
if(*nptr == '\0') break;
num *= 10;
}
return num * sign;
}
long strtol(const char *nptr){
int sign = 1;
long num = 0;
if(*nptr == '+'){
sign = 1;
*nptr++;
}else if(*nptr == '-'){
sign = -1;
*nptr++;
}
while(true){
num += *nptr - '0';
*nptr++;
if(*nptr == '\0') break;
num *= 10;
}
return num * sign;
}
double strtof(const char *nptr){
int sign = 1;
double num = 0;
// 符号の処理
if(*nptr == '+'){
sign = 1;
*nptr++;
}else if(*nptr == '-'){
sign = -1;
*nptr++;
}
// 整数部の処理
while(true){
num += *nptr - '0';
*nptr++;
if(*nptr == '\0' || *nptr == '.') break;
num *= 10;
}
// 小数部の処理
if(*nptr == '.'){
*nptr++;
double dec = 1;
while(true){
num += (*nptr - '0') / (dec *= 10);
*nptr++;
if(*nptr == '\0') break;
}
}
return num * sign;
}
int main(){
char str1[256] = "12345";
char str2[256] = "123.45";
printf("str1:%s -> atoi(str1):%d\n", str1, strtoi(str1));
printf("str1:%s -> atol(str1):%ld\n", str1, strtol(str1));
printf("str2:%s -> atof(str2):%lf\n", str2, strtof(str2));
return 0;
}
このようなエラー文はどのように対処したら良いのでしょうか?
返信削除16: error: ‘true’ undeclared (first use in this function)
16: error: (Each undeclared identifier is reported only once
16: error: for each function it appears in.)
64: error: ‘true’ undeclared (first use in this function)
39: error: ‘true’ undeclared (first use in this function)
すいません...Cではtrue/falseは使えませんでしたね...
削除解決策の一つはファイルの拡張子を.cから.cppにすることで, もう一つの解決策はtrueを1と置き換えることになります.