矢量char奇怪的字符

时间:2017-01-09 10:25:42

标签: c char printf strcpy

任何人都知道如何复制到字符串?因为我使用了strcpy函数但是当我打印结果时它会显示奇怪的字符。我想连接'name'+'''+''e-mail'。使用scanf我必须将字符设为null'\ 0'?

#include <stdio.h>
#include <string.h>
int main (){

    char message[150];
    char name[150];
    char mail[150];
    char result[150];
    printf("Introduce name: \n");
    scanf("%s",message);
    printf("Introduce email \n");
    scanf("%s",server);
    strcpy(result,message);
    result[strlen(result)]='@'; 
    strcpy(&result[strlen(result)],server);
    printf("RESULT: %s\n",result);
    return 0;
 }

1 个答案:

答案 0 :(得分:4)

result[strlen(result)]='@';会覆盖由result引入strcpy(result,message);的NUL终结符。因此,后续strlen的结果未定义。

更好的解决方案是使用strncat,或者您可以通过编写

来逃避

char result[150] = {'\0'};

将初始化整个数组。

但是您仍然存在溢出result数组的风险。您可以使用更安全的strncpy来避免这种情况。更好的是,使用snprintf并让C标准库为您执行连接。