Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将两个字符合并到每个索引中的字符数组中_C_Arrays - Fatal编程技术网

C 将两个字符合并到每个索引中的字符数组中

C 将两个字符合并到每个索引中的字符数组中,c,arrays,C,Arrays,我有一个名为s2的字符串,它的长度是未定义的,我想把它的值存储到一个字符数组中,问题是我一个接一个地存储,就像12 | 12 | 13 | 14。 这是chars,因为我正在从一个文件中提取这个字符串,但之后我将 更改为整数 这是我的密码: while(s2[i]!='\0') { if(s2[i]==' ') i++; MEM[j]=*(s2+i); i++; j++; } MEM是存

我有一个名为s2的字符串,它的长度是未定义的,我想把它的值存储到一个字符数组中,问题是我一个接一个地存储,就像12 | 12 | 13 | 14。 这是chars,因为我正在从一个文件中提取这个字符串,但之后我将 更改为整数

这是我的密码:

 while(s2[i]!='\0')
    {
        if(s2[i]==' ')
            i++;

        MEM[j]=*(s2+i);
        i++;
        j++;
    }
MEM是存储值的数组


我的问题是如何将每个索引中的两个值存储到数组MEM中。

有两种方法

首先,有两个字符串:

char MEM[size][2];

while(s2[i]!='\0')
{
    if(s2[i]==' ')
        i++;

    MEM[j][0]=*(s2+i); // *(s2 + i) is the same as s[i]
    i++;
    MEM[j][1]=*(s2+i); // *(s2 + i) is the same as s[i]
    i++;
    j++;
}
第二,将数字转换为
int
类型:

int MEM[size];

while(s2[i]!='\0')
{
    if(s2[i]==' ')
        i++;

    MEM[j]=atoi(*(s2+i));
    i+=3;
    j++;
}
额外:
移位和存储有一个复杂的版本,但有点复杂,不推荐使用。

不能在一个字符中存储两个值,因为i是单字节元素,但是您可以将MEM设置为两个字节元素的数组,并将第一个字符存储在MSB字节中,第二个字符存储在LSB中。如何将MEM设置为两个字节的数组?
*(s2+i)
只是
s2[i]
。我想你知道,但你可能想指出,如果OP神秘地查看语法,你会想知道WTF?第二个答案是用2个字符存储数字吗?它将数字存储在单个变量中,但是的,它应该在给定的地址中存储2个数字。