我正在阅读一个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?
答案 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