C编译器错误

use*_*372 2 c

我有以下程序:

#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[]){
    char* number1[100] = {argv[1]};
    char* a;
    char* separate = "/ \n";
    int alpha, beta, gamma, delta;
    int i;
    a = strtok(number1, separate);
    printf("%s",a); 
}
Run Code Online (Sandbox Code Playgroud)

当我编译它时,它不断给我一个警告说:"'char*'的间接级别与'int'不同"但我到目前为止所使用的都是char*.

完整的错误消息如下:

a.c: In function 'main':
a.c:9:7: warning: assignment makes pointer from integer without a cast [enabled by default]
Run Code Online (Sandbox Code Playgroud)

(第9行:a = strtok(number1, separate);)

任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?

sep*_*p2k 5

您没有包含string.h,因此strtok未声明该函数.在旧版本的C语言中,允许使用未声明的函数(尽管gcc应该产生(另外)关于此的警告 - 至少有-Wall),在这种情况下,函数的返回类型被假定为int.因此编译器认为strtok返回一个int并因此警告您正在尝试将该int分配给指针.

要解决此问题,只需添加缺少的包含.

一旦修复了这个问题,编译器就会抱怨number1它的类型错误strtok(它是一个指针数组而不是一个指针),但这是一个不同的问题.