gpt4 book ai didi

c - 对 `startswith' 的 undefined reference

转载 作者:行者123 更新时间:2023-11-30 20:21:59 24 4
gpt4 key购买 nike

我正在编写一些C,其中程序会将第一个命令行参数转换为 int 并检查它是否是 int。如果它不是整数值,它将尝试检查字符串是否以“.”开头。性格与否。由于某种原因,我得到了一个 undefined reference 。
这看似已定义的引用怎么会是 undefined reference ?

下面是代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#include <string.h>
int startswith(char,char);

int main(int argc, char * argv[]) {
int forst;
srand(time(NULL));
int speed_delay = rand() % 20;
printf("The speed delay is:%i\n", speed_delay);
int first = atoi(argv[1]);
printf("First:%i\n", first);

if (first == 0) {
//this means text was inserted instead of a number
if (startswith(first, '.')) {
printf("string starts with a period !");

}
} else {

}

int startswith(const char * one,
const char * two) {
if (strncmp(one, two, strlen(two)) == 0) {
return 1;
}
return 0;
}
}

最佳答案

您的 startswith 声明和定义不兼容。

声明有两个 char 类型的参数,但函数实际上有两个 const char * 类型的参数。

您还在main内部定义了startswith。函数不能嵌套。

由于不存在与声明匹配的函数,因此您有一个 undefined reference 。

修正您的声明以匹配定义。

int startswith( const char *, const char *);

您也没有正确调用此函数。您传入一个 int 和一个 char。它应该这样调用:

if(startswith(argv[1],"."))

关于c - 对 `startswith' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41027594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com