我改成这样后,运行结果又出了问题,strcat_s(buffer, 100,areaNumber);
用的是VS2013
#include <stdio.h>
#include <string.h>
void main()
{
char areaNumber[5];
char phoneNumber[12];
int input;
char extraNumber[5];
char buffer[25] = { 0 };
printf("请输入区号:");
gets_s(areaNumber, 80);
printf("请输入电话号码:");
gets_s(phoneNumber, 80);
printf("有分机号吗?(y/n)");
input = getchar();
fflush(stdin);
if (input == 'y')
{
printf("请输入分机号:");
gets_s(extraNumber, 80);
strcat_s(buffer, areaNumber);
strcat_s(buffer, "-");
strcat_s(buffer, phoneNumber);
strcat_s(buffer, "-");
strcat_s(buffer, extraNumber);
}
else{
strcat_s(buffer, areaNumber);
strcat_s(buffer, "-");
strcat_s(buffer, phoneNumber);
}
printf("您的电话号码是%s。\n", buffer);
}
```
你的buffer只有25
strcat_s(buffer, 25,areaNumber);
类似的
gets_s(extraNumber, 80);
而你 char extraNumber[5];,那么要么前面修改为5,要么后面修改为80
而且要记住,你输入的字符最大长度必须比数组长度小1。否则结束符没地方放。