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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将带有数字和字母的字符串放入结构中的int指针中相关的知识,希望对你有一定的参考价值。

typedef struct Int40
{
  int *digits;
} Int40;




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

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

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

    for(i = 0; i < strlen(str); i++)
    {
        p->digits = atoi(str);
        printf("%d
", 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 *数字将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
", 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 
", *p->digits);

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

    return 0;
}

输出:

Input  str: 1234567890123456789                                                                                                             
Output str: 1234567890123456789 

以上是关于将带有数字和字母的字符串放入结构中的int指针中的主要内容,如果未能解决你的问题,请参考以下文章

将字符串中的 int 转换为字母; [关闭]

c语言 用指针方法处理:输入一行字符,统计并输出其中大写字母、小写字母、空格、数字及其它字符的个数。

数据结构——算法之(031)(将字符串中全部小写字母排在大写字母的前面)

将二维指针数组中的字符串分配给一维指针数组

在字母数字 NSString 中将 FLOATS 向上/向下舍入为 INTS

Haskell 函数将 Int 转换为 alpha numerotation [关闭]