C 不兼容的整数到指针转换传递';int';至类型为'的参数;常量字符*';
我有以下代码,无法访问EXC_BAD_(代码=1),并有以下警告: 将“int”传递给“const char*”类型的参数的整数到指针转换不兼容C 不兼容的整数到指针转换传递';int';至类型为'的参数;常量字符*';,c,C,我有以下代码,无法访问EXC_BAD_(代码=1),并有以下警告: 将“int”传递给“const char*”类型的参数的整数到指针转换不兼容 char *printb(fmt,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) { static char string[256]; sprintf(string,fmt,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); return(string); } 此代码正在调用print
char *printb(fmt,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
{
static char string[256];
sprintf(string,fmt,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);
return(string);
}
此代码正在调用printb:
if (gotargs) fname = *(argv++);
else do {
printf("file name #%d: ", i+1);
fname = gets(inbuf);
} while (*fname == 0);
if ((gbuf=fopen(fname, "r")) == NULL)
error(printb("I can't find '%s'", fname));
printf("reading '%s'...\n", fname);
if (fgets((lp = inbuf), 512, gbuf) == NULL)
error("file is empty");
另外,如何正确地将get()转换为fgets()
谢谢那么,为什么要使用古代风格的函数声明呢
char *printb(fmt,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
{
?
此声明将所有参数声明为int
s。试图将char*
指针传递到此函数只会导致灾难。此外,您没有在printb
调用中提供所有参数,这是另一个灾难
看起来您正试图实现一个参数数目可变的函数。具体来说,该语言支持…
参数声明。了解可变函数和va_列表
您的功能将按照
char *printb(const char *fmt, ...)
{
static char string[256];
va_list va;
va_start(va, fmt);
vsprintf(string, fmt, va);
va_end(va);
return string;
}
或者更好
...
vsnprintf(string, sizeof string, fmt, va);
...
尽管返回指向内部静态缓冲区的指针的想法也有缺陷
同时,试图用你的方法“模仿”可变参数是没有希望的。它不会工作。那么,为什么要使用古代风格的函数声明呢
char *printb(fmt,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
{
?
此声明将所有参数声明为int
s。试图将char*
指针传递到此函数只会导致灾难。此外,您没有在printb
调用中提供所有参数,这是另一个灾难
看起来您正试图实现一个参数数目可变的函数。具体来说,该语言支持…
参数声明。了解可变函数和va_列表
您的功能将按照
char *printb(const char *fmt, ...)
{
static char string[256];
va_list va;
va_start(va, fmt);
vsprintf(string, fmt, va);
va_end(va);
return string;
}
或者更好
...
vsnprintf(string, sizeof string, fmt, va);
...
尽管返回指向内部静态缓冲区的指针的想法也有缺陷
同时,试图用你的方法“模仿”可变参数是没有希望的。它不起作用。您还没有声明
printb()
函数参数的类型。这是故意的,还是你对C很陌生?我写C已经有一段时间了,这段代码本身也很古老。你还没有声明printb()
函数参数的类型。这是故意的,还是你对C很陌生?我写C已经有一段时间了,这段代码本身也很古老。所以char*printb(char*fmt,a0,a1,a2,a3,a4,a5,a6,a7,a7,a8,a9,a10)是我想要的?所以char*printb(char*fmt,a0,a1,a2,a4,a5,a7,a8,a9,a10)是我想要的?