Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以像C中的PHP那样将变量插入字符串中? P>一个非常直接的问题,但是所有的搜索结果都返回C或C++。 基本上,我正在尝试类似于PHP处理字符串的方式 $var = "hello ". $world;_C - Fatal编程技术网

有没有一种方法可以像C中的PHP那样将变量插入字符串中? P>一个非常直接的问题,但是所有的搜索结果都返回C或C++。 基本上,我正在尝试类似于PHP处理字符串的方式 $var = "hello ". $world;

有没有一种方法可以像C中的PHP那样将变量插入字符串中? P>一个非常直接的问题,但是所有的搜索结果都返回C或C++。 基本上,我正在尝试类似于PHP处理字符串的方式 $var = "hello ". $world;,c,C,但是在C中,我做了一些研究,我发现C中唯一的一件事就是做这样的事情: printf("View a Table's Rows: "); scanf("%i", &getTable); query = "SELECT * FROM `" += table_names[getTable] += "`"; if( mysql_query(grab.con, query) ) { fprintf(stderr, "%s\n", mysql_er

但是在C中,我做了一些研究,我发现C中唯一的一件事就是做这样的事情:

    printf("View a Table's Rows: ");
    scanf("%i", &getTable);

    query = "SELECT * FROM `" += table_names[getTable] += "`";
    if( mysql_query(grab.con, query) ) {

        fprintf(stderr, "%s\n", mysql_error(grab.con));
        exit(1);

    }
也就是说,将+=变量添加到字符串中。但这会返回错误:

m-bin.c: In function 'tables':
m-bin.c:41:8: error: array size missing in 'table_names'
m-bin.c:77:54: error: invalid operands to binary + (have 'char *' and 'char *')
make:[sql]错误1

有没有一种方法可以在C中实现这一点,或者我是被迫编写自己的函数来实现这一点的


编辑:getTable是一个整数,如果这意味着什么的话。类型转换会有帮助吗,还是我在读一篇白痴文章?

要在C中连接字符串,必须分配内存并将字符串复制到这个内存区域

char str[100];
strcpy(str, "SELECT * FROM `");
strcat(str, table_names[getTable]);
strcat(str, "`");

为什么不
sprintf

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

main()
{
    char buffer [50];
    char var1 [50] = "hello";
    char var2 [50] = "world";

    sprintf(buffer, "%s %s", var1, var2 );

    printf("%s", buffer);
}
#包括
#包括
main()
{
字符缓冲区[50];
char var1[50]=“你好”;
char var2[50]=“世界”;
sprintf(缓冲区,“%s%s”,var1,var2);
printf(“%s”,缓冲区);
}

您必须使用
snprintf

int len=strlen("SELECT * FROM `")+strlen(table_names[getTable])+2; //Here 2 for one byte for '`' and one byte for '\0'
char query[len];
snprintf(query,len,"%s%s%c","SELECT * FROM `",table_names[getTable],'`');
printf("%s\n",query);

strcat,snprintf将有帮助。选中pit sprintf(),您可以将参数传递给它,这些参数将嵌入到字符串中您需要它们的地方。例如:sprintf(“测试计数:%d,myinteger”);+rep,非常感谢在查找它之后,我似乎应该自己找到答案:(.不过,我不知道为什么我发布这个问题得到+3 rep…@IndependentProgrammer:谢谢,当你学习一门新语言时,请尽快告诉你。)