将带有数字和字母的字符串放入结构中的int指针中

时间:2018-03-06 18:13:14

标签: c string parsing pointers integer

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-&gt; digits [i]

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

然后我的结果只返回123456789

编辑** 我在parseString函数中添加了一个malloc 我试图弄清楚如何使用struct

中的int * digits将char * str转换为int格式

1 个答案:

答案 0 :(得分:0)

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

1)内存分配

FULL OUTER JOIN

这是字符串的分配,但var ans = (from a in dbo.BILL_INFO_DETAIL join b in dbo.SERVICE_INFO on a.SERVICE_CODE equals b.SERVICE_CODE join p in dbo.PAY_MODE on a.PAY_MODE_ID equals p.PAY_MODE_ID where (a.INPUT_STATUS == "1") && (new[] { 1610, 1611, 1612 }.Contains(b.SERVICE_CODE)) && (new[] { 10, 11, 12 }.Contains(a.STAMP_DATE.Month)) && (new[] { 2017 }.Contains(a.STAMP_DATE.Year)) && (b.FEE > 1) let TransactionType = new[] { 1, 2 }.Contains(a.PAY_MODE_ID) ? "OFFLINE" : "ONLINE" group new { a, b, p } by new { bName = b.NAME, TransactionType, pName = p.NAME } into abpg orderby abpg.Key.TransactionType select new { Service_Name = abpg.Key.bName, TransactionType = abpg.Key.TransactionType, Payment_Method = abpg.Key.pName, Transaction = abpg.Sum(abp => abp.a.REQUESTED_QTY), Income = abpg.Sum(abp => abp.a.ITEM_TOTAL) }).Distinct(); src/general/utils.js类型的指针。

2)函数utils.js

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

返回p->digits值。 int类型变量的最大值为atoi 检查:limits.h

如果您使用int atoi(const char *str); ,则可以为您提供int位数字。 你需要比int更多的数字吗?

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

检查以下程序:

2147483647

输出:

long long int