任何人都知道如何复制到字符串?因为我使用了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;
}
答案 0 :(得分:4)
result[strlen(result)]='@';
会覆盖由result
引入strcpy(result,message);
的NUL终结符。因此,后续strlen
的结果未定义。
更好的解决方案是使用strncat
,或者您可以通过编写
char result[150] = {'\0'};
将初始化整个数组。
但是您仍然存在溢出result
数组的风险。您可以使用更安全的strncpy
来避免这种情况。更好的是,使用snprintf
并让C标准库为您执行连接。