用c往另一个程序里面实现输入

admin 发表于 2011-03-04 22:22 浏览次数:

如题 谁能说下思路 有代码更佳

分类: C++ | 评论数: 15 | 阅读全文

C汉字太多问题的解决

admin 发表于 2011-03-04 21:36 浏览次数:

在显示汉字时常常字少没有感觉,但字多了就显示不全。只要在程序中填加一句就可以了。如:
#include <graphics.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <stdlib.h>
#include <conio.h>

#define ROW 1 /* 纵坐标放大倍数 */
#define COL 2 /* 横坐标放大倍数 */

void main()
{
int x,y;
char *s="汉字显示程序"; /* 需要显示的汉字 */
FILE *fp;
char buffer[32]; /* buffer用来存储一个汉字的点阵字节 */
register m,n,i,j,k;
unsigned char qh,wh;
unsigned long offset;
int gd=DETECT,gm; 
initgraph(&gd,&gm," "); /* 屏幕初始化 */

/* 打开汉字库文件,该字库可以在ucdos中找到,这里需要确保文件路径正确 */
if ((fp=fopen("hzk16","rb"))==NULL)
{
/* 找不到字库文件,出错处理 */
printf("Can’t open haz16,Please add it");
getch(); 
closegraph(); 
exit(0);
}

x=20; y=100; /* 显示开始位置设置 */
while(*s) /* 字符串以’\0′结束,这里将其作为字符串结束的标志 */
{
qh=*(s)-0xa0;
wh=*(s+1)-0xa0;
offset=(94*(qh-1)+(wh-1))*32L;/* 计算该汉字在字库中偏移量 */
fseek(fp,offset,SEEK_SET); /* 将文件指针移到对应位置 */
fread(buffer,32,1,fp); /* 取出汉字32字节的点阵字模存入buffer中(一个汉字)*/

/* 将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字 */
for (i=0;i<16;i++) 
for(n=0;n<ROW;n++)
for(j=0;j<2;j++) /* 两个字节才能表示一行16*16 */
for(k=0;k<8;k++)
for(m=0;m<COL;m++)
if (((buffer[i*2+j]>>(7-k))&0×01)!=0) /* 该位为1才显示 */
putpixel(x+8*j*COL+k*COL+m,y+i*ROW+n,GREEN);

s+=2; /* 因为一个汉字内码占用两个字节,所以s必须加2 */
x+=30; /* 下一个汉字的显示位置向右移动一定距离 */
}

getch(); /* 敲击键盘才使程序退出 */
closegraph();
}
可以变为
#include <graphics.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <stdlib.h>
#include <conio.h>

#define ROW 1 /* 纵坐标放大倍数 */
#define COL 2 /* 横坐标放大倍数 */

void main()
{
int x,y;
char *s="汉字显示程序"; /* 需要显示的汉字 */
FILE *fp;
char buffer[32]; /* buffer用来存储一个汉字的点阵字节 */
register m,n,i,j,k;
unsigned char qh,wh;
unsigned long offset;
int gd=DETECT,gm; 
initgraph(&gd,&gm," "); /* 屏幕初始化 */

/* 打开汉字库文件,该字库可以在ucdos中找到,这里需要确保文件路径正确 */
if ((fp=fopen("hzk16","rb"))==NULL)
{
/* 找不到字库文件,出错处理 */
printf("Can’t open haz16,Please add it");
getch(); 
closegraph(); 
exit(0);
}

x=20; y=100; /* 显示开始位置设置 */
while(*s) /* 字符串以’\0′结束,这里将其作为字符串结束的标志 */
{
qh=*(s)-0xa0;
wh=*(s+1)-0xa0;
offset=(94*(qh-1)+(wh-1))*32L;/* 计算该汉字在字库中偏移量 */
fseek(fp,offset,SEEK_SET); /* 将文件指针移到对应位置 */
fread(buffer,32,1,fp); /* 取出汉字32字节的点阵字模存入buffer中(一个汉字)*/

/* 将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字 */
for (i=0;i<16;i++) 
for(n=0;n<ROW;n++)
for(j=0;j<2;j++) /* 两个字节才能表示一行16*16 */
for(k=0;k<8;k++)
for(m=0;m<COL;m++)
if (((buffer[i*2+j]>>(7-k))&0×01)!=0) /* 该位为1才显示 */
putpixel(x+8*j*COL+k*COL+m,y+i*ROW+n,GREEN);

s+=2; /* 因为一个汉字内码占用两个字节,所以s必须加2 */
if(x>590) x=20,y+=18;
else x+=30; /* 下一个汉字的显示位置向右移动一定距离 */
}

getch(); /* 敲击键盘才使程序退出 */
closegraph();
}

分类: C++ | 评论数: 1 | 阅读全文

第一次用这个,唉,没分,C++ DLL问题,有人能帮我吗?

admin 发表于 2011-03-04 20:23 浏览次数:

用C++写个DLL,担供一个函数来被PB调用。
函数传入一个string型参数,返回一个BOLB型数据。
传入的string型数据是PB从XML中读出的(JAVA将image类型用BASE64编码写入XML的)。
也就是用C++写个解析BASE64的DLL.这个如何写,请给出详细代码。谢谢!

问题补充: C++返回应该是BYTE型。

分类: C++ | 评论数: 2 | 阅读全文

数组的地址

admin 发表于 2011-03-04 20:14 浏览次数:

int ints[100]={1, 2, 3};
假设ints在内存中的起始位置是100,那么表达式&ints的值是多少?表达式&ints+4的值是多少?为什么?
&ints是一个指向数组的指针吗?int (*p)[10]呢?

分类: C++ | 评论数: 21 | 阅读全文

GDAL读取图片时弹出600多个‘无法解析外部符号’的错误?

admin 发表于 2011-03-04 20:08 浏览次数:

使用GDAL读图片时到底需要把那些dll放到工程下面,具体位置那么弄啊,弄了半天实在是搞不清,后来进去了,编译却出现600多个错误,很多都是‘无法解析外部符号’,求解啊

分类: C++ | 评论数: 3 | 阅读全文

妖哥快来,求助:Windows7服务程序

admin 发表于 2011-03-04 19:55 浏览次数:

我用C++Builder2010写了一个Windows服务程序,在服务程序中用WinExec调用了我写的另一个exe程序。
这个系统在Windows xp和2003都很好,但在Windows7上有问题,exe程序无法显示在桌面,但进程管理器中查看有此进程。

当我在服务中WinExec调用一个一般的程序时,系统提示“交互式服务检测”,点击查看后可正常显示。
但我这个exe被我设置不显示在任务栏中,被WinExec时任何反应都没有,仅是进程管理器中有。

帮帮我啊!

分类: C++ | 评论数: 5 | 阅读全文

有关vs2008的错误:fatal error LNK1120: 1 个无法解析的外部命令

admin 发表于 2011-03-04 19:49 浏览次数:

在网上查了一些,基本都说是编译器的问题,说是lib没有设置好。而且我之前的一个程序也确实证实了这个问题。那个程序用DEV C++ 编译就可以通过,而用vs208就通不过,所以想跟大家咨询一下再vs2008是如何设置lib的。一般都说是在项目,然后属性那里,调了一段时间也没有调好。
下面vs2008是给出的错误提示:

无法解析的外部符号 "class std::basic_ostream <char,struct std::char_traits <char> > & __cdecl operator < <(class std::basic_ostream <char,struct std::char_traits <char> > &,class WDate const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVWDate@@@Z),该符号在函数 _main 中被

你先说是编译什么代码出的问题撒

http://topic.csdn.net/u/20090429/22/1dc67d4a-52f9-4018-8407-e211c707e830.html
代码在我之前发的一个帖子里,问题是在5楼。之前这个问题已经解决了的。我是经过反复验证发现是vs2008的问题。

分类: C++ | 评论数: 14 | 阅读全文

求助 一个关于指针与函数的程序

admin 发表于 2011-03-04 19:37 浏览次数:

        下面的程序,param()这个函数运行后,buf结果为空,param1(),param2(),param3()这3个函数就能实现结果,谁能给详细的讲解下啊

#include   <stdio.h>
#include   <string.h>
#include   <stdlib.h>

void   param(char   *src)
{
            src   =   "abcd ";
}

void   param1(char   *src)
{
memcpy(src,   "abcd ",4);
}

void   param2(char   *src)
{
*src   =   'a ';
*(src+1)   =   'b ';
*(src+2)   =   'c ';
*(src+3)   =   '\0 ';
}

void   param3(char   **src)
{
*src   =   "abcd ";
}

int   main()
{
char   *buf   =   char   *)malloc(10   *   sizeof(char));
                char   *buf1   =   char   *)malloc(10   *   sizeof(char));
                char   *buf2   =   char   *)malloc(10   *   sizeof(char));
                char   *buf3   =   char   *)malloc(10   *   sizeof(char));

param1(buf1);
param2(buf2);
param3(&buf3);
                param(buf);

printf( "buf1   =   %s\n ",buf1);
                printf( "buf2   =   %s\n ",buf2);
                printf( "buf3   =   %s\n ",buf3);
                printf( "buf   =   %s\n ",buf);

                free(buf);
                free(buf1);
                free(buf2);
                free(buf3);
return   0;
}  

分类: C++ | 评论数: 7 | 阅读全文

线性链表删除到最后一个节点head 但还要保留这个链表 这个head该如何处理 是把head=NULL么?

admin 发表于 2011-03-04 19:27 浏览次数:

线性链表删除到最后一个节点head
但还要保留这个链表的head 只把head的存储的内容清空
这个head该如何处理 是把head=NULL就可以把存储的内容清空么?还要有其他的处理么

分类: C++ | 评论数: 12 | 阅读全文

Businessskinform异常!不得不发贴请求支援!

admin 发表于 2011-03-04 19:25 浏览次数:

先后用Businessskinform v8.65,9.20版本,CB2010的,skinDBGird控件不能用,换成其姊妹产品dynamicskinform12.15版本,同样是DBGird控件不能用,异常均在其相应的hpp文件里第564行: __property ColSizingwithLine;,
错误是:[BCC32 Error] spDBGrids.hpp(564): E2303 Type name expected,
将第564行注释起来,就可以编译成功!

但注释起来似乎不是解决的根本办法吧?请高手帮助。

分类: C++ | 评论数: 3 | 阅读全文

算法设计。

admin 发表于 2011-03-04 19:22 浏览次数:

谁能用C语言编一用分支界限优先队列解0-1背包问题。能给出代码吗?谢谢!

分类: C++ | 评论数: 1 | 阅读全文

xe跟2010哪个好用点???

admin 发表于 2011-03-04 19:20 浏览次数:

PS:
在win7下

分类: C++ | 评论数: 1 | 阅读全文

学习<<C程序设计语言>>章节1.9字符数组的时候遇到一个问题,有关for的结束和getchar()

admin 发表于 2011-03-04 19:18 浏览次数:

下面的代码是书中<<C程序设计语言>>章节1.9字符数组P21页的范例,其中有:
for (i=0;i<lim-1 && (c=getchar())!=EOF && c!=’\n’;++i)
  s[i]=c;

在书中的2.6章节,P32页,引用的时候是:  
for (i=0;i<lim-1 && (c=getchar())!=’\n’ && c!=EOF;++i)

我的问题是:
在函数getline中执行for语句时如果直接输入回车,那么循环结束,此时getchar()还运行吗?为什么?
我在其他地方提问时有人说直接输入回车循环结束时getchar()不运行了,可我测试的时候感觉还在运行;另外有人说程序直接输入回车就退出了,可在我的机器上是正常的。谁能告诉我这段程序有没有问题?

/***********************************************************************
  名称: <<C程序设计语言>>章节1.9字符数组
  类型: Hello (Hello.c)

  author: <<C程序设计语言>>
  date:

  功能: 读入一组文本行并把最长的文本行打印出来
***********************************************************************/

#include <stdio.h>
#define MAXLINE 1000 /* 最大输入行的大小 */

int getline (char line[],int maxline);
void copy (char to[],char from[]);

/* 打印最长的输入行 */
main()
{
  int len; /* 当前行长度 */
  int max; /* 至目前为止所发现的最长行的长度 */
  char line[MAXLINE]; /* 当前输入的行 */
  char longest[MAXLINE]; /* 用于保存最长的行 */
   
  max=0;
  while ((len=getline(line,MAXLINE))>0)
  if (len>max){
  max=len;
  copy(longest,line);
  }
  if (max>0) /* 有一行 */
  printf ("%s",longest);
  return 0;
}

/* getline:将一行读入s中并返回其长度 */
int getline (char s[],int lim)
{
  int c,i;

  for (i=0;i<lim-1 && (c=getchar())!=EOF && c!=’\n’;++i)
  s[i]=c;
  if (c==’\n’){
  s[i]=c;
  ++i;
  }
  s[i]=’\0′;
  return i;
}

/* copy:从from拷贝到to;假定to足够大 */
void copy(char to[],char from[])
{
  int i;
   
  i=0;
  while ((to[i]=from[i])!=’\n’)
  ++i;
}

/*——————运行:—————–*/
/* 第一个测试直接输入回车然后ctrl+z退出 */
D:\Dev-Cpp>hello.exe

^Z

?=
/* 第二个测试输入回车然后输入字符串ctrl+z退出 */
D:\Dev-Cpp>hello.exe

ok?
^Z
ok?

D:\Dev-Cpp>

分类: C++ | 评论数: 11 | 阅读全文

关于free释放内存的一点问题

admin 发表于 2011-03-04 17:50 浏览次数:

我用malloc申请了过多的内存,比如
*p =(type *)malloc(sizof(type)* 100);
多申请了50个,然后我想释放;
free(p+50);
结果报错,请问是怎么回事啊?

分类: C++ | 评论数: 15 | 阅读全文

如何在模板类中以友元的形式重载operator/运算符?

admin 发表于 2011-03-04 17:50 浏览次数:

例如:
template<class T>
class OP
{
  private:
  friend int operator/(int divA, vector<T> divB);
};

编译器会提示:

E:\Program\My Pro\t_CB_OVERLOAD\main.cpp|9|warning: friend declaration ‘int operator/(int, std::vector<T, std::allocator<_CharT> >)’ declares a non-template function|

E:\Program\My Pro\t_CB_OVERLOAD\main.cpp|9|note: (if this is not what you intended, make sure the function template has already been declared and add <> after the function name here) |
||=== Build finished: 0 errors, 1 warnings ===|
我用gcc编译的。

我现在就是要在一个模板类中用友元重载operater/ 大家帮帮我吧!

分类: C++ | 评论数: 11 | 阅读全文

求解,大侠看看!

admin 发表于 2011-03-04 17:49 浏览次数:

#include<iostream.h>
char *A(const char* pstr)
{
int len=strlen(pstr);
char a[100];
int i=0;
char tmp;
while((*pstr++)!=’\0′)
a[i++]=*pstr;
  for(int s=0,t=len-1;s<len/2;s++,t–)
{
tmp=a[s];
a[s]=a[t];
a[t]=tmp;
}
return a;
}
void main()
{
  char *p="nihao";
  char *s;
  s=A(p);
  cout<<s<<endl;
}

怎么输出来是个乱码?哪里错了吗?请高手指点!

分类: C++ | 评论数: 9 | 阅读全文

vassist 插件提示颜色问题

admin 发表于 2011-03-04 17:49 浏览次数:

我想选中一个变量,出现此变量的地方,全部高亮,而且颜色我想用深蓝(虽然目前也有提示,可底色非常浅).怎么设置阿,我找了半天没找到,请知道仁兄指点.我记得是可以改的,因为之前一同事的提示的就是深蓝.

分类: C++ | 评论数: 4 | 阅读全文

在C程序中显示汉字

admin 发表于 2011-03-04 17:49 浏览次数:

谢谢!谢谢!非常感谢!我想了好久都不能解决,这个做法应该推广。太有效了。

分类: C++ | 评论数: 11 | 阅读全文

指令引用的内存,该内存不能为read

admin 发表于 2011-03-04 17:49 浏览次数:

MFC程序单击运行时出现“”指令引用的“”内存。该内存不能为“written”。界面根本出不来,之前一直好用的,今早来以运行就出错误,有人知道可能是什么地方引起的嘛?

分类: C++ | 评论数: 2 | 阅读全文

使用jpeglib出现的问题(JPEG parameter struct mismatch)

admin 发表于 2011-03-04 17:49 浏览次数:

JPEG parameter struct mismatch: library thinks size is 488, caller expects 520

我查了下 在 jpeg_create_decompress(&cinfo); 这条语句出现了问题

哪位高手能帮我解决下

分类: C++ | 评论数: 5 | 阅读全文

返回首页 | 关于我们 | 联系我们 | 广告合作 | 网站地图 | 友情链接 | 版权声明