请各位C程序高手看看我的这段代码,为什么运行出错? (*cut[m]+n++)=source[i];改为(char*)((int)cut[m]+n++)=source[i];出错是因为类型错误。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sorry(*cut[m]+n++)=source[i];改为*(char*)((int)cut[m]+n++)=source[i];出错是因为类型错误。 *(char*)((int)cut[m]+n++)=source[i];我该成这样也不对 兄弟你的代码很费解。我看是因为char *bb[3];你没有为你的这些指针分配空间 向楼上请教:您的意思是:用new分配吗? 加上一句:char* p = (char*)((int)cut[m]+n++);看看p是不是合法的值 加上char* p = (char*)((int)cut[m]+n++);合法,但运行还出错 strtok 目的是把一个较长的字符串以某一个字符(比方是:'\t')为断开点分成若干个字串。 to :whz_time(时间有限) 申明成数组要好一些,用new也没问题,只是要记得释放。你要是写两个循环就容易看得多了 hiahia~~~~~你只定义了三个指针bb[0],bb[1],bb[2]却没给它们赋值,还敢跟我说是合法的值? char *bb[3]; bb[0]=""; bb[1]=""; bb[2]="";我已经这样作了,还是有错。真是搞不明白。 我看了你的代码,认为你对内存分配还没有搞清楚(特别实指针和指针数组的初始化),编写的代码华而不实。char *bb[3];的意思是什么你知道吗?char *bb0,char *bb1,char *bb2;初始化应该bb[0] = new char[5];bb[1] = new char[5];bb[2] = new char[5];如果要的话我把你的程序改了一下#include "stdafx.h"#include "stdio.h"#include "string.h"#include "conio.h"int CutString(char *source,char *cut[],char ch);int main(int argc, char* argv[]){char aa[100]="abcd\tefgh\tijkl";char *bb[3];CutString(aa,bb,'\t');printf("%s",bb[1]);getch();return 0;}int CutString(char *source,char *cut[],char ch){int i=0,n=0,m=0;if(source[0]==NULL)return 0;int j = strlen(source);for(i=0;i<=j;i++){if(source[i]==ch||source[i]=='\0'){ source[i]=0; m++; n=0;}else{ if(n == 0){ cut[m]=&source[i];//运行到这儿出错 n++; }}}return ch;}我说话不好听,不过希望你正视自己的问题。 #include "stdio.h"#include "string.h"#include "conio.h"int CutString(char *source,char *cut[],char ch);int main(int argc, char* argv[]){ char* aa="abcd\tefgh\tijkl"; char* bb[3]; CutString(aa,bb,'\t'); printf("%s",bb[1]); getch(); return 0;}int CutString(char *source,char *cut[],char ch){ int i=0,n=0,m=0; if(source[0]==NULL) return 0; for(int j =0;j<3;j++)//分配空间 { cut[j] = new char[10]; } for(i=0;i<=(int)strlen(source);i++) { if(source[i]==ch||source[i]=='\0') { cut[m][n+1]='\0'; m++; n=0; } else { cut[m][n++]=source[i];//运行到这儿出错 } } return ch;}//这可以了,哎我也是眼高手低,搞了半天 谢谢各位帮忙!!to “lhj(努力加油)”非常感谢您的指点,我相信“良药苦口;……”,再一次的向您表示感谢!!! VC快速移动位图 请教public继承时,派生类中的函数的访问权限,由谁决定的问题? 动态设置默认按钮怎么不行呀??? 大侠们,救命呀! vc 6.0中怎么使用tabcontrol组件?? 求教:第三方软件的一个枚举变量,怎么才能同时把几个枚举属性都赋给对象? RSS浏览器 源程序 请问高手,像QQ那种将窗口停靠在屏幕边缘的效果是怎么做的? 我是菜鸟!!求教?? 如何更改一个工程的工程名? 各位大俠,請教dsoframer 刪除文件問題? 在基于多文档的程序中可以加入对话框吗? 从WORD文件中提取文本时,怎样能不将表格数据一起提出来!
(*cut[m]+n++)=source[i];
改为
*(char*)((int)cut[m]+n++)=source[i];出错是因为类型错误。
您的意思是:用new分配吗?
char* p = (char*)((int)cut[m]+n++);
看看p是不是合法的值
申明成数组要好一些,用new也没问题,只是要记得释放。
你要是写两个循环就容易看得多了
你只定义了三个指针bb[0],bb[1],bb[2]却没给它们赋值,还敢跟我说是合法的值?
bb[0]="";
bb[1]="";
bb[2]="";
我已经这样作了,还是有错。真是搞不明白。
char *bb[3];的意思是什么你知道吗?
char *bb0,char *bb1,char *bb2;
初始化应该
bb[0] = new char[5];
bb[1] = new char[5];
bb[2] = new char[5];如果要的话我把你的程序改了一下#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "conio.h"int CutString(char *source,char *cut[],char ch);int main(int argc, char* argv[])
{
char aa[100]="abcd\tefgh\tijkl";
char *bb[3];
CutString(aa,bb,'\t');
printf("%s",bb[1]);getch();return 0;
}
int CutString(char *source,char *cut[],char ch)
{
int i=0,n=0,m=0;
if(source[0]==NULL)
return 0;
int j = strlen(source);
for(i=0;i<=j;i++)
{
if(source[i]==ch||source[i]=='\0')
{
source[i]=0;
m++;
n=0;
}
else
{
if(n == 0){
cut[m]=&source[i];//运行到这儿出错
n++;
}
}
}return ch;
}我说话不好听,不过希望你正视自己的问题。
#include "string.h"
#include "conio.h"int CutString(char *source,char *cut[],char ch);int main(int argc, char* argv[])
{
char* aa="abcd\tefgh\tijkl";
char* bb[3];
CutString(aa,bb,'\t');
printf("%s",bb[1]); getch(); return 0;
}
int CutString(char *source,char *cut[],char ch)
{
int i=0,n=0,m=0;
if(source[0]==NULL)
return 0;
for(int j =0;j<3;j++)//分配空间
{
cut[j] = new char[10];
}
for(i=0;i<=(int)strlen(source);i++)
{
if(source[i]==ch||source[i]=='\0')
{
cut[m][n+1]='\0';
m++;
n=0;
}
else
{
cut[m][n++]=source[i];//运行到这儿出错
}
}
return ch;
}
//这可以了,哎我也是眼高手低,搞了半天
非常感谢您的指点,我相信“良药苦口;……”,
再一次的向您表示感谢!!!