gpt4 book ai didi

c - 函数警告 C : "warning: type of ‘char_array’ defaults to ‘int’ "

转载 作者:太空宇宙 更新时间:2023-11-04 05:04:08 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <string.h>

int myprint(char_array){
char mystring[80];
strcat(mystring, "\n");
printf("%s", mystring);
return 0;
}

int main(int argc, char** argv){
int count = 5;
char letter = 'c';
printf("decimal: %d, char: %c\n", count, letter);

myprint("sup");

return 0;

}

我在编译时收到警告:

cchilders:~/projects/buildyourownlisp_in_C/ch3 [master]$ compile basics.c basics
basics.c: In function ‘myprint’:
basics.c:4:5: warning: type of ‘char_array’ defaults to ‘int’
int myprint(char_array){
^

它可以编译,但是我的 myprint 函数不起作用:

cchilders:~/projects/buildyourownlisp_in_C/ch3 [master]$ ./basics 
decimal: 5, char: c

我看到这个答案 warning: return type defaults to ‘int’ [-Wreturn-type]但不适用于我,因为我确实声明了 int main(...)

我还看到了这个函数声明:

return_type function_name( parameter list ) {
body of the function
}

对于 myprint,我声明采用 int 并返回 0。这个警告是什么意思,为什么我的功能不起作用?谢谢

回答:

void myprint(char mystring[]){
strcat(mystring, "\n");
printf("%s", mystring);

}

消除警告,但会导致Segmentation fault (core dumped)

更改为

void myprint(char[] mystring){
strcat(mystring, "\n");
printf("%s", mystring);

}

使情况变得更糟:

cchilders:~/projects/buildyourownlisp_in_C/ch3 [master]$ cc -std=c99 -Wall basics.c -o basics
basics.c:4:21: error: expected ‘;’, ‘,’ or ‘)’ before ‘mystring’
void myprint(char[] mystring;){
^
basics.c: In function ‘main’:
basics.c:15:5: warning: implicit declaration of function ‘myprint’ [-Wimplicit-function-declaration]
myprint("sup");
^

我也试过

void myprint(char[] mystring;){...

void myprint(char[] mystring,){...

最佳答案

正如其他人所指出的,您没有为 char_array 指定类型,因此它被假定为 int。将其更改为 char char_array[] 可以解决此问题。

您的另一个问题是您将字符串常量 ("sup") 传递给此函数,然后试图修改它。字符串常量存储在内存的只读部分,因此您无法修改它。

鉴于您只打印带有换行符的字符串,您可以改为这样做:

void myprint(char mystring[]){
printf("%s\n", mystring);
}

关于c - 函数警告 C : "warning: type of ‘char_array’ defaults to ‘int’ ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35616120/

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