传递'strcat'的参数2使得整数中的指针没有强制转换[-Wint-conversion]

时间:2016-04-20 11:03:58

标签: c fifo strcat

我正在阅读一个fifo,然后我尝试以不同的格式制作另一个数组。 我知道buf可以按预期获得它的值,因为打印它是好的。

char graphic[100];
char buf[100];
read(fd_read,&buf,50);
for(int i=0; i<10; i++){
strcat(graphic, buf[i]); }

给我错误:

  

传递'strcat'的参数2使得指针来自整数而没有   施放[-Wint-conversion]

我在Linux上使用eclipse,在C. ... HELP?

2 个答案:

答案 0 :(得分:4)

strcat的签名是:

char *strcat(char *dest, const char *src);

即。第二个参数应该是指向以char终止的'\0'数组的指针。在你的情况下,你传递了一个char

而不是for(int i=0; i<10; i++){ strcat(graphic, buf[i]); },您可能只需要:(假设graphic在某处初始化)

strcat(graphic, buf); /* Use strncat for limited number of characters */

还要确保程序中包含string.h

要自己附加字符,您可以使用分配而不是使用函数。

/* Append one character (ith character of buf[i] ) */
const size_t len = strlen(graphic);
if(len + 1 >= sizeof graphics) { /* Error handling */ }
else {
  graphic[len] = buf[i];
  graphic[len + 1] = '\0';
}

答案 1 :(得分:0)

strcat()的syntaxt:

char *strcat(char *dest, const char *src);

这两个参数应该是字符指针。在你的代码中,buf是一个字符指针(或数组),但是在调用strcat的第二个参数中,你没有发送整个数组(buf),因此将它作为一个字符。

尝试这样做,这可能符合您的要求:

char graphic[100];
char buf[100];
read(fd_read, &buf, 50);

strcpy(graphic, "");
strncat(graphic, buf, 10); //last parameter tells you how many bytes to append

有关错误的更多信息,请参阅以下链接:

C strcat - warning: passing arg 2 of `strcat' makes pointer from integer without a cast