利用字符串指针来打印字符 - 整数组合

时间:2010-12-19 18:12:45

标签: c string pointers

我有C函数,它将字符串指针作为参数。此函数返回为指针指向的符号。我想根据要求生成=多个符号。假设,我家里有四扇门。我想给 d1,d2,d3....之类的不同门提供不同的名字。在这种情况下,我想创建一个指向字符串和整数的字符串指针,这样我就可以得到只有数值不同的符号。这有助于我对看到字符串值的符号进行分类。我想知道如何声明一个字符串指针,以便我可以创建一个我上面提到的符号。

[编辑]

我会尽力说清楚。

我有两个指针的数组

const char *test[] ={"a","12345"}

我想把指针指向a和1以及a和2 ......等等。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:3)

由于这个问题很模糊,所以还有另外一个问题:

#include <stdio.h>

int main(int argc, char *argv) {
    const char *test[] = { "a", "12345" };

    int i, j;

    for (i = 0; test[0][i] != 0; ++i)
        for (j = 0; test[1][j] != 0; ++j)
            printf("%c%c\n", test[0][i], test[1][j]);

    return 0;
}

输出:

a1
a2
a3
a4
a5

答案 1 :(得分:1)

字符串是指向字符的指针,因此您不能指向整数。您可以进行一些转换工作,但这似乎不适合您的问题。你需要的是一个结构。

实施您的示例:

struct Doors {
    int num;
    char sym;
} d1, d2, d3;

d1.sym = 'd';
d1.num = 1;

d2.sym = 'd';
d2.num = 2;

d3.sym = 'd';
d3.num = 3;

修改

我的解决方案被修改为第二个示例的实现:

struct Doors {
    int * nums;
    const char * sym;
} d;

int n = 3; // Amount of doors.
d.nums = (int *) malloc(n * sizeof(int)); // Memory for int array of n elements.

if (d.nums == 0) {
    /* Memory could not be allocated. */
} else {
    d.sym = "d";
    for (int i = 0; i < n; ++i) {
        d.nums[i] = i + 1;
    }

    // d -> { "d", [ 1, 2, 3 ] }

    free(d.nums); // Free the allocated memory.
}

答案 2 :(得分:1)

目前尚不清楚,但我认为您希望能够访问各个角色。这是你在找什么?

#include <stdio.h>

int main()
{
    int i;
    char* name[] = {"a1","b2","c3"};
    for(i=0;i<3;i++)
        printf("%s = %c %c\n",name[i],name[i][0],name[i][1]);
}

输出:

a1 = a 1
b2 = b 2
c3 = c 3