sscanf有关问题

sscanf问题
程序中用到sscanf函数,目的是:已经读取文件一行字符串str_line,其中每个str_line中有几段小字符串str_line1,str_line2,......将他们从str_line中读取出来。调试程序时没有错误,只是提示sscanf函数不安全,运行也没问题。但是直接运行exe文件时却报错,运行到这就出错。
网上搜了一下,大家说是调试与直接运行分配的内存不同,那怎么解决这种问题呢?或者用其他什么办法可以实现同样的功能(因处理数据量可能比较大,要考虑到效率问题)?求教各位大神,麻烦说的详细一点哦。。。
------解决方案--------------------
用sscanf_s就不会报警,最好用字符分割strtok_s,比如以","分割,分割后再转换成你要想的数据格式。如果你的字符串个数不是很有规律(固定个数),最好不用sscanf或用sscanf_s,如果非要用,要格式要写好,如
sscanf_s(szMsg, "%2s,%lf,%lf,%lf,%lf;",&string, &dData1,&dData2, &dData3, &dData3);
注意%2s说明该字符串只有两个字符
------解决方案--------------------
#pragma warning(disable:4996)
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.