2015-11-12 59 views
-4

我试图让一个char变量等于C中的一个char变量序列任何想法我会怎么做?char等于C中的char变量

例子:

char s1 = "dunno"; 
char s2 = "what"; 
char s3; 

s3 = s1,s2,s1; //equals dunnowhatdunno 
+1

不,这不是如何在C中工作。字符串声明的语法是无效的,并且不能通过逗号(',')完成串联。你有没有读过任何C教程或书籍? – lurker

+1

char s1 [] =“dunno”; char s2 [] =“什么”; char s3 [99]; strcpy(s3,s1);的strcat(S3,S2);的strcat(S3,S1); //买一本C书! – BobRun

回答

1

首先,你不能宣布一个多长度的字符,字符意味着只举行1个字符,所以你必须使用一个字符数组来存储你的价值观(或串在C++):

char s1[] = "dunno"; 
char s2[] = "what"; 

我们将S3存储为一个空的焦炭与14个空插槽:

char s3[14]; 

然后,共同ncatenate两个字符串,你可以使用strcat的功能(http://www.cplusplus.com/reference/cstring/strcat/):

strcat(s3,s1); 
strcat(s3,s2); 
strcat(s3,s1); 

这需要S1,并将其添加到S3,然后S2到S3,并最终再次S1到S3。

下面是完整的代码:

#include "stdio.h" 

int main(void) { 

    char s1[] = "dunno"; 
    char s2[] = "what"; 
    char s3[14]; 

    strcat(s3,s1); 
    strcat(s3,s2); 
    strcat(s3,s1); 

    printf(s3); 

    return 0; 
} 

所有3个结果串连在

dunnowhatdunno 

编辑输出:如@lurker说,这将是更安全的第一个副本S1到S3来用“dunno”开始s3 [],然后展开s3 []。

+0

在你使用'strcat(s3,s1)'这个不好之前,你的变量's3'没有被初始化。你需要'strcpy(s3,s1);'开始,然后'strcat(s3,s2);'然后'strcat(s3,s1);'。 – lurker