我正在从事个人项目以学习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 *。有人能告诉我发生了什么以及如何解决这个问题吗?
答案 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;
}