C字符串 - 字符*作为整数?

时间:2014-04-11 19:07:12

标签: c string pointers

我正在从事个人项目以学习C.第一部分是解析由空格分隔的用户提示的整数行,并将其读入整数数组。这就是我所拥有的:

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

#define MAX_PAGES 100

int main() {

char *pageInputArray;
int *pages[MAX_PAGES];
char *start;
char *end;
int iterVar;


printf("%s\n", "Enter the page reference stream: ");
scanf("%s", pageInputArray);

start = pageInputArray[0];

iterVar = 0;
while ((start = strpbrk(start, "0123456789") != NULL) && (iterVar < MAX_PAGES))  {
    pages[iterVar] = strtol(start, &end, 0);
    printf("%d\n", pages[iterVar]);
    start = end;
    iterVar++;
}
}

当我试图强迫时,我得到了这个警告:

warning:  assignment makes pointer from integer without a cast [enabled by default]

对于包含以下内容的行:

start = pageInputArray[0];

while ((start = strpbrk(start, "0123456789") != NULL) && (iterVar < MAX_PAGES))  {

pages[iterVar] = strtol(start, &end, 0);

它让我发疯,因为看起来机器认为@start是一个整数,但我明确地宣称它是一个char *。有人能告诉我发生了什么以及如何解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

在存储任何内容之前,您需要首先分配pageInputArray

答案 1 :(得分:0)

start是一个指向char类型的指针,你指定它是一个值。我的意思是pageInputArray[0]的值为char。

答案 2 :(得分:0)

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

#define MAX_PAGES 100

int main() {
    char pageInputArray[MAX_PAGES + MAX_PAGES];
    int pages[MAX_PAGES];
    char *start;
    char *end;
    int iterVar;

    printf("Enter the page reference stream: \n");
    fgets(pageInputArray, sizeof pageInputArray, stdin);

    start = &pageInputArray[0];
    iterVar = 0;
    while ((start = strpbrk(start, "0123456789")) != NULL && iterVar < MAX_PAGES)  {
        pages[iterVar] = strtol(start, &end, 0);
        printf("%d\n", pages[iterVar]);
        start = end;
        iterVar++;
    }
    return 0;
}