gpt4 book ai didi

c - 将包含数字和字母的字符串放入结构中的 int 指针中

转载 作者:行者123 更新时间:2023-11-30 19:31:16 25 4
gpt4 key购买 nike

typedef struct Int40
{
int *digits;
} Int40;




Int40 *parseString(char *str)
{
Int40 *p;

int i;
int *intPtr;
printf("%s\n", str);

p->digits = malloc(sizeof(str) + 1);

for(i = 0; i < strlen(str); i++)
{
p->digits = atoi(str);
printf("%d\n", p->digits);
}

int main(int argc, char *argv[])
{

Int40 *p;

parseString("0123456789abcdef0123456789abcdef01234567");
return 0;
}

我正在尝试将字符串“012345679abcdef0123456789abcdef01234567”放入结构指针数字中,但是我不确定应该如何执行此操作。

我当前程序的错误是“传递atoi的参数1使指针来自整数而不进行强制转换

如果我从 str[i] 和 p->digits[i] 中删除 [i]

p->digits[i] = atoi(str[i]);

然后我的结果只返回 123456789

编辑**我在 parseString 函数中添加了一个 malloc我试图弄清楚如何使用结构中的 int *digits 将 char *str 转换为 int 格式

最佳答案

看起来您对一些事情感到困惑。

1)内存分配

 p->digits = malloc(sizeof(str) + 1);

这是字符串的分配,但p->digitsint类型的指针。

2) 函数atoi

int atoi(const char *str);

返回int值。int 类型变量的最大值为 2147483647检查:limits.h

如果您使用long long int,它可以为您提供19位。您需要的数字是否超出了 long long int 所能提供的数字?

3)记得为结构体分配内存,也记得释放它。

检查以下程序:

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

typedef struct LLint19
{
long long int *digits;
} LLInt19;

long long int sg7_atoi(const char *c)
{
long long int value = 0;
int sign = 1;
if( *c == '+' || *c == '-' )
{
if( *c == '-' ) sign = -1;
c++;
}
while (*c >= '0' && *c <= '9') // to detect digit == isdigit(*c))
{
value *= 10;
value += (int) (*c-'0');
c++;
}
return (value * sign);
}

LLInt19 *parseString(char *str)
{
LLInt19 *p;
long long int *value;

printf("Input str: %s\n", str);

value = malloc (sizeof(long long int) ); // allocate memory for long long int value

p = malloc( sizeof(LLInt19) ); // allocate memory for the structure

*value = sg7_atoi(str); // do a conversion string to long long int

p->digits = value;

return p;
}

int main(int argc, char *argv[])
{
LLInt19 *p;

char test1[] = "1234567890123456789";

p = parseString(test1);

printf("Output str: %lld \n", *p->digits);

free(p->digits);
free(p);

return 0;
}

输出:

Input  str: 1234567890123456789                                                                                                             
Output str: 1234567890123456789

关于c - 将包含数字和字母的字符串放入结构中的 int 指针中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49137431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com