gpt4 book ai didi

c - C 中的指针整数字符警告

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

我编写了一个函数来检查两个字符串是否相同。

int sameString (char string1[], char string2[]) {
int i = 0;
while (string1[i] == string2[i]) {
if (string1[i] == "\0" || string2[i] == "\0") {
if (string1[i] == "\0" && string2[i] == "\0") {
return TRUE;
}
else {
return FALSE;
}
}
i++;
}
}

它工作正常。但是,gcc 编译器给出了一些我没有收到的警告。

2.c: In function ‘sameString’:
2.c:10:24: warning: comparison between pointer and integer [enabled by default]
if (string1[i] == "\0" || string2[i] == "\0") {
^
2.c:10:46: warning: comparison between pointer and integer [enabled by default]
if (string1[i] == "\0" || string2[i] == "\0") {
^
2.c:11:28: warning: comparison between pointer and integer [enabled by default]
if (string1[i] == "\0" && string2[i] == "\0") {
^
2.c:11:50: warning: comparison between pointer and integer [enabled by default]
if (string1[i] == "\0" && string2[i] == "\0") {
^

此外,在扫描并保存字符串时,

char operation[8];
scanf ("%s", &operation);

我又收到一个错误,但我没有收到。

2.c: In function ‘main’:
2.c:65:9: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[8]’ [-Wformat=]
scanf ("%s", &operation);
^

有人可以解释一下这些错误是什么吗?

最佳答案

首先,string1[i] 的类型为 char,您将其与字符串进行比较,"\0 “。你需要的是

 string1[i] == '\0'

同样。

其次,操作很可能是一个数组。您可以使用 scanf() 将数组名称作为 %s 的参数传递,它会自动衰减为指向数组第一个元素的指针。

关于c - C 中的指针整数字符警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37486288/

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