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

匿名 (未验证) 提交于 2019-12-03 01:10:02

问题:

I'm having a problem with the program below. I'm trying to scan through a string command entered by the user for certain words. My major issue right now is that when I run the following I get a warning saying that "passing arg 2 of `strcat' makes pointer from integer without a cast". My intent is to loop through the first three characters of the string "s", concatenate them onto a string "firstthree", and later check the value of the string "firstthree". Any help is appreciated.

#include  #include  #include  #include  #include  #include  #include  #include  #include   /* Simple example of using gnu readline to get lines of input from a user. Needs to be linked with -lreadline -lcurses add_history tells the readline library to add the line to it's internal histiry, so that using up-arrow (or ^p) will allows the user to see/edit previous lines. */  int main(int argc, char **argv) {     char *s;     while (s=readline("Enter Name: ")) {             add_history(s); /* adds the line to the readline history buffer */             printf("Hello %s\n",s);/*output message to the user*/             char *firstthree;             int i;             for(i = 0; i 

}

回答1:

Your program has a lot of problems; you never initialize firstthree, for example.

The reason you're getting the specific error you're seeing is because of this call:

strcat(firstthree, s[i]); 

s is a char *, so s[i] is a char, but strcat expects both parameters to be pointers to null-terminated strings. What it seems you want is something like:

char firstthree[4] = { 0 }; for (int i = 0; i 


回答2:

You can't use strcat() to do this; it requires two char* s as arguments, not a char* and a char. You could use strncat() if it is available on your platform.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!