我有以下程序:
#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);)
任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?
您没有包含string.h,因此strtok未声明该函数.在旧版本的C语言中,允许使用未声明的函数(尽管gcc应该产生(另外)关于此的警告 - 至少有-Wall),在这种情况下,函数的返回类型被假定为int.因此编译器认为strtok返回一个int并因此警告您正在尝试将该int分配给指针.
要解决此问题,只需添加缺少的包含.
一旦修复了这个问题,编译器就会抱怨number1它的类型错误strtok(它是一个指针数组而不是一个指针),但这是一个不同的问题.
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |