70,020
社区成员




int my_atoi(const char *str, int len)
{
if (str == NULL || len > strlen(str))
{
return -1;
}
int num;
char *buf = malloc(len+1);
if (buf == NULL)
{
fprintf(stderr, "line: %d, error: %s\n", __LINE__, strerror(errno));
exit(EXIT_FAILURE);
}
memset(buf, 0, len+1);
memcpy(buf, str, len);
num = atoi(buf);
free(buf);
return num;
}
// 完整的
int atoi_ex(const char *s,const int len ,int *num)
{
if (NULL == s) return -1;
char check[128] = {0};
sprintf(check ,"%u" ,(unsigned int)-1);
if (strlen(s) > strlen(check)) return -2;
char convert[128] = {0};
if (len >= strlen(s)) strcpy(convert ,s);
else strncpy(convert ,s ,len);
//*(s+len) = '\0';
*num = atoi(convert);
return 0;
}
// 简单的
int atoi_ex(char *s,int len)
{
*(s+len) = '\0';
return atoi(s);
}
//int atoi(char *s,int len) 输入:"1234567" 3 输出:123
#include <stdio.h>
char str[]="1234567";
int atoi(char *s,int len) {
int i;
char f[4];
if (NULL==s) return 0;
if (len<1 || 9<len) len=9;
sprintf(f,"%%%dd",len);
sscanf(s,f,&i);
return i;
}
void main() {
printf("atoi(%s,3)==%d\n",str,atoi(str,3));
}
//atoi(1234567,3)==123
#include <stdio.h>
#include <stdlib.h>
int My_atoi_1(char *sourcePtr,int len)
{
int result = 0;
for (int i = 0;i < len;++i)
{
if (sourcePtr[i] >= '0' && sourcePtr[i] <= '9')
{
result = result * 10 + sourcePtr[i] - '0';
}
else
{
return -1;
}
}
return result;
}
int main()
{
char *str = "123465";
int sum = My_atoi_1(str,3);
printf("%d\n",sum);
return 0;
}