vs2013vscode debugg 疑问

(北京单身圈)
(村里的丫头)
(扑街的小号)
(十枚硬币)
第三方登录:visual studio-VS2013 在debug模式下编译没有错误,但使用release模式,就有一堆错误
作者:用户
浏览:947 次
VS2013在debug模式下编译没有错误,但使用release模式,就有一堆错误#define_CRT_SECURE_NO_WARNINGS#include#include#include"字符串.
VS2013 在debug模式下编译没有错误,但使用release模式,就有一堆错误
#define _CRT_SECURE_NO_WARNINGS
#include "字符串.h"
int main()
Mystring string1;
initwithstring(&string1, "xhqld");
printstring(&string1);
backaddchar(&string1, 'd');
printstring(&string1);
backaddstr(&string1, "forever");
printstring(&string1);
char * p = NULL;
p = findfirstchar(&string1, 'd');
*p = 'a';
printstring(&string1);
char * p1 = mystrstr(string1.p, "ever");
if (p1 != NULL)
printf("%c
printf("not find
printf("--------------
deletechar(&string1, 'a');
printstring(&string1);
printf("--------------
deletestring(&string1, "for");
printstring(&string1);
printf("--------------
addchar(&string1, 'W', 'e');
printstring(&string1);
printf("--------------
addstring(&string1, "lol",'W');
printstring(&string1);
system("pause");
#include&stdio.h&
#include&stdlib.h&
struct CString
char *//保存字符串的首地址
//字符串长度
typedef struct CString
void init(Mystring * string);//初始化字符串
void initwithlength(Mystring * string, int length);
void initwithstring(Mystring *string, char * copystring);//
void printstring(Mystring * string);//打印字符串
int mystrlen(char * p);//求字符串长度
char * mystrcpy(char * dest, const char * source);//字符串复制
void backaddchar(Mystring * string, char ch);//尾部增加一个字符
void backaddstr(Mystring * string, char * str);//尾部增加一个字符串
char * findfirstchar(Mystring * string, char ch);//查找第一个匹配字符
char * mystrchr(char * str, char ch);//查找字符
char * mystrstr(char * dest, char * str);//字符串比较函数
int deletechar(Mystring * string, char ch);//删除一个字符
int deletestring(Mystring * string, char * str);//删除一个字符串
void addchar(Mystring * string, char ch, char searchchar);//任意增加字符
void addstring(Mystring * string, char *str, char searchchar);//任意增加字符串
#define _CRT_SECURE_NO_WARNINGS
#include"字符串.h"
void init(Mystring * string)//初始化字符串
string-&length = 0;
string-&p = NULL;
void initwithlength(Mystring * string, int length)
//Mystring * p = (char *)malloc(sizeof(char)*length);
Mystring * p = (char *)calloc(length, sizeof(char));//calloc为分配的内存清零,malloc不清零
void initwithstring(Mystring *string, char * copystring)//
int length = mystrlen(copystring);
string-&p = (char *)calloc(length + 1, sizeof(char));
mystrcpy(string-&p, copystring);
string-&length = length + 1;
void printstring(Mystring * string)//打印字符串
printf("%s
", string-&p);
int mystrlen(char * p)
if (p != NULL)
int length = 0;
while (*p++ != '')
return -1;//打开失败
char * mystrcat(char * dest, const char * source)
if (dest == NULL || source == NULL)
return NULL;
char * pdest =
while (*pdest != '')
while (*source != '')
*pdest++ = *source++;
*pdest = '';
char * mystrcpy(char * dest, const char *source)
if (dest == NULL || source == NULL)
return NULL;
char * pdest =
while (*source != '')
*pdest++ = *source++;
*pdest = '';
void backaddchar(Mystring * string, char ch)//尾部增加一个字符
if (mystrlen(string-&p) + 2 & string-&length)//表达式成立,则表示已满
string-&p = (char *)realloc(string-&p, string-&length + 2);
string-&p[string-&length - 1] =
string-&p[string-&length] = '';
printf("%s
", string-&p);
string-&length += 2;
string-&p[mystrlen(string-&p)] =
string-&p[mystrlen(string-&p) + 1] = '';
void backaddstr(Mystring * string, char * str)//尾部增加一个字符串
if (str != NULL)
if ( mystrlen(string-&p) + mystrlen(str) +1 & string-&length)
int length = mystrlen(str);
string-&p = (char *)realloc(string-&p, string-&length + length + 1);
mystrcat(string-&p, str);
string-&p[string-&length + length] = '';
string-&length = string-&length + length + 1;
mystrcat(string-&p, str);
string-&p[mystrlen(string-&p) + mystrlen(str)] = '';
char * findfirstchar(Mystring * string,const char ch)
char * p = mystrchr(string-&p, ch);
char * mystrchr(char * str, char ch)
if (str != NULL || ch != '')
char * pstr =
while (*pstr != '')
if (*pstr == ch)
return NULL;
char * mystrstr(char * dest, char * str)
char * pdest =
char * pstr =
int str_length = mystrlen(str);
int dest_length = mystrlen(dest);
if (str_length &= dest_length)
int flag = 0;
int i = 0;
while (dest_length - i &= str_length && flag == 0)
if (pdest[i] == pstr[0])
for (int k = 1; k & str_length && flag == 1; k++)
flag = pdest[i + k] == pstr[k] ? 1 : 0;
return flag == 1 ? &pdest[i - 1] : NULL;
/*if (flag == 1)
return &pdest[i - 1];
return NULL;*/
int deletechar(Mystring * string, char ch)//删除一个字符
char * p = mystrchr(string-&p, ch);
if (p != NULL )
while (*p != '')
*p++ = *(p + 1);
*--p = '';
int deletestring(Mystring * string, char * str)//删除一个字符串
char * p = mystrstr(string-&p, str);//查找字符串位置
if (p != NULL)
int str_length = mystrlen(str);//被查找子串的长度
int string_length = mystrlen(string-&p);//计算母串string的长度
char * pend = p + str_//pend指向string-&p中被查找子串的尾部
while (* pend != '')//把被查找子串后面的字符前移,覆盖被查找的子串
*p++ = *pend++;
string-&p[string_length - str_length] = '';//为删除str子串后的string母串设置新的字符串结束符
void addchar(Mystring * string, char addchar, char searchchar)//任意增加字符
char * position = mystrchr(string-&p, searchchar);
if (position != NULL)
int string_length = mystrlen(string-&p);//求母串的长度
int position_length = mystrlen(position);//求从插入字符的前面位置开始到字符串末尾处,要移动字符的个数
if (string_length + 2 & string-&length)//判断是否满了
string-&p = (char *)realloc(string-&p, string_length + 2);
for (int i = string_ i & string_length - position_ i--)//从插入位置开始将剩下的字符窜后移
string-&p[i] = string-&p[i - 1];
string-&p[string_length + 1] = '';//重新设置字符串结束符
*position =//插入字符串
string-&length += 1;//字符串实际长度增加
for (int i = string_ i & string_length - position_ i--)//从插入位置开始将剩下的字符窜后移
string-&p[i] = string-&p[i - 1];
string-&p[string_length + 1] = '';//重新设置字符串结束符
*position =//插入字符串
void addstring(Mystring * string, char *str, char searchchar)//任意增加字符串
printf("test:%d
", string-&length);
char * position = mystrchr(string-&p, searchchar);
if (position != NULL)
int string_length = mystrlen(string-&p);//求母串的长度
int position_length = mystrlen(position);//求从插入字符的前面位置开始到字符串末尾处,要移动字符的个数
int str_length = mystrlen(str);//求要添加子串的长度
if (string_length + str_length + 1 & string-&length)//判断以前分配的空间是否够用
string-&p = (char *)realloc(string-&p, string_length + str_length + 1);
string-&length += str_
for (int i = string_ i &= string_length - position_ i--)//移动字符,连同字符串结束符一起移动
string-&p[i + str_length] = string-&p[i];
for (int i = string_length - position_ i &= string_length - 1; i++)
string-&p[i] = *str++;
for (int i = string_ i &= string_length - position_ i--)//移动字符,连同字符串结束符一起移动
string-&p[i + str_length ] = string-&p[i];
for (int i = string_length - position_ i & string_length - position_length + str_ i++)
printf("test:%d,%c
", i, string-&p[i]);
string-&p[i] = *str++;
printf("test:%d,%c
", i, string-&p[i]);
错误代码片段如下:
char * position = mystrchr(string-&p, searchchar);
if (position != NULL)
char * p = mystrchr(string-&p, ch);
char * p = findfirstchar(&string1, 'd');
*p = 'a';
双击每个错误,修改下。
提示你没有初始化变量,比如
你就修改为
int i = 0;
总之给一个初始值。
不是所有路径都有返回值,你就加上返回值。
int foo(int i)
if (i == 0)
这里,把return写在了if中(或者循环,switch等),所以不是所有路径都有返回值。
int foo(int i)
if (i == 0)
解决方案二:
----------------------
【云栖快讯】直播推荐——现在报名3月12日编程语言系列讲座,与行业资深专家一起学习Python、C++、JavaScript、Java!还可在活动页面领取红包,百分百中奖哦!&&
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
40+云计算产品,6个月免费体验
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
IT采购开年惠,百款产品5折起,新购满额再返最高6000!vs2013调用一个自己定义的函数之后debug程序终止了!【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:572,393贴子:
vs2013调用一个自己定义的函数之后debug程序终止了!收藏
学写链表,中间有一个给链表排序的函数,依照给出的答案定义的函数如下:void sort_list(PNode PHead){
int t,len,i,j;
len = len_list(PHead);
for (i=0, p = PHead-&PNi&len-1; ++i,p = p-&PNext)
for (j=0, q = p-&PNj& ++j,q = q-&PNext)
if (p-&date &q-&date)
p-&date = q-&
}}手动排版,请各位看看是不是代码有问题?注释掉这个调用之后程序执行正常!
c语言,学开发选博为峰,技术新,学习氛围轻松,随到随学免费试学,学费低,学时短,博为峰c语言!
手动排版失败了啊!还是这样啊!
还是不行,不报错也不警告!就是程序崩溃!!!环境是vs2013!求指点
登录百度帐号

我要回帖

更多关于 vscode debug 的文章

 

随机推荐