gpt4 book ai didi

将字符指针转换为字符串指针,删除重复项

转载 作者:行者123 更新时间:2023-11-30 17:07:31 24 4
gpt4 key购买 nike

我正在编写一个程序,它接受一个字符串作为输入,例如35x40x12。然后我想使用 int 指针将数字存储为单独的元素。到目前为止,我已经设法做到这一点,以便单位数字可以工作,即 3x4x6 可以工作,但是如果我输入两位数字,例如 35x40x12,则 35 将存储在第一个位置,但在第二个位置它也会存储存储 35 中的 5,对于 40 的位置 3 和 4 也执行此操作。我如何删除这个重复项?

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

int present(int l, int w, int h);
int *stringC (char *z);


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

char *d = "53x23x4";//input
printf("%d", *(stringC(d)+2));//whatever's stored in pointer position

return 0;
}

int *stringC (char *z)
{

int i;
int *k = malloc(sizeof(int)*20);
int j = 0;

for(i=0; z[i] !='\0';i++)
{
if( z[i]!= 'x')
{
k[j]=atoi(&z[i]);
j++;}
}


return k;

}

最佳答案

正如其他人所建议的,学习调试。这将是值得的!

<小时/>

看看strtok。来自man strtok:

The strtok() function parses a string into a sequence of tokens.

这些标记由 "x" 等分隔符分隔。因此,为了解析数字,请使用如下内容:

char d[] = "53x23x4";

int array[3];

char* it = strtok(d, "x");

for (size_t i = 0; i < sizeof(array) / sizeof(*array) && it; ++i, it = strtok(NULL, "x"))
array[i] = atoi(it);

注意d 指向一个自动且可写字符串。 strtok 修改字符串的内容,并且由于字符串文字修改会产生未定义的行为,因此您需要在可写位置分配字符串。

使用一些动态内存分配机制代替数组,你就拥有了它。这可以让您摆脱当前正在使用的这种不方便的麻烦。

<小时/>

注释:

  • 停止使用char*来指向字符串文字。请改用 const char*。这可以防止您尝试修改字符串文字时出现微妙的错误(未定义的行为)。

关于将字符指针转换为字符串指针,删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34049112/

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