阅读:1923回复:18
这个缓冲区的字符串怎么操作?
在SDK环境下设置的字符串缓冲区TCHAR tchBuffer[1024]
需要替换里面的字符,应该怎么实现?给分。 |
|
|
沙发#
发布于:2002-08-09 11:16
没看懂你想做什么
|
|
|
板凳#
发布于:2002-08-09 11:21
LPTSTR lpszSystemInfo; // pointer
TCHAR tchBuffer[1024]; // buffer for string lpszSystemInfo = tchBuffer; 现在lpszSystemInfo 指向存有字符串的tchBuffer,我想替换tchBuffer里面的一些字符,怎么做? |
|
|
地板#
发布于:2002-08-09 13:11
昏倒
用下标不行吗 |
|
|
地下室#
发布于:2002-08-09 13:22
对阿,怎么还有问题?
|
|
|
5楼#
发布于:2002-08-09 13:48
这个,这个,看C的书吧。
分还是留着给自己好了。 |
|
6楼#
发布于:2002-08-09 14:16
最愚蠢的是,使用下标出错了 :(
|
|
|
7楼#
发布于:2002-08-09 14:26
#include \"stdafx.h\"
#define BUFSIZE 1024 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { LPTSTR lpszSystemInfo; // pointer to system information string DWORD cchBuff = 256; // size of computer or user name TCHAR tchBuffer[BUFSIZE]; // buffer for string TCHAR newbuf[BUFSIZE]; // DWORD dwResult; // function return value lpszSystemInfo = tchBuffer; GetWindowsDirectory(lpszSystemInfo, MAX_PATH+1); int j=0; for(int i=0;i<BUFSIZE&&lpszSystemInfo!=0;i++) { if(lpszSystemInfo==\'\\\' ) { newbuf[j++]=\'\\\\\'; } else if(lpszSystemInfo!=0) { newbuf[j]=lpszSystemInfo; } else newbuf[j]=0; } if(newbuf!=0) MessageBox(NULL,newbuf,\"gotit\",MB_OK); // TODO: Place code here. return 0; } 错在哪里? |
|
|
8楼#
发布于:2002-08-09 14:42
faint++!
试for(int i=0;(i<BUFSIZE) && (lpszSystemInfo++) != 0;i++) 你的pointer增加过吗? 为什么不直接用tchBuffer? |
|
9楼#
发布于:2002-08-09 14:47
error C2001: newline in constant
error C2143: syntax error : missing \')\' before \'{\' 上面是两个错误提示,对应 if(lpszSystemInfo==\'\\\' ) 和其下一行。 和指针的增减无关 |
|
|
10楼#
发布于:2002-08-09 14:55
.....我不想说了。
好好看C书先。 |
|
11楼#
发布于:2002-08-09 15:06
for(int i=0;i<BUFSIZE&&lpszSystemInfo!=0;i++)
{ if(lpszSystemInfo==\'\\\' ) { newbuf[j++]=\'\\\\\'; } 其中 应该改为 if(lpszSystemInfo == \'\\\\)\'; { newbuf[j++]=\'\\\\\'; newbuf[j++]=\'\\\\\'; } 我可能昨天没说明白,单个的\\表示转义,比如\\n便是回车换行,想要表示\\字符必须要写成\\\\,比如字符串\"aa\\\\bb\"输出来是aa\\bb 而你调用函数得到的路径如果输出是C:\\aa\\bb。则保存的本身就已经是C:\\\\aa\\\\bb字符串。我不知道你为什么还要再添一个\\ [编辑 - 8/9/02 by trent] [编辑 - 8/9/02 by trent] |
|
|
12楼#
发布于:2002-08-09 15:07
for(int i=0;i<BUFSIZE&&lpszSystemInfo!=0;i++) |
|
|
13楼#
发布于:2002-08-09 15:14
靠,怎么回事,我写的代码跟我看到的不一样。
if(lpszSystemInfo == \'\\\\) { newbuf[j++]=\'\\\\\'; newbuf[j++]=\'\\\\\'; } 其中的lpszSystemInfo后面有个下标,我刚才死活显示不出来 :mad: |
|
|
14楼#
发布于:2002-08-09 15:15
[quote]for(int i=0;i<BUFSIZE&&lpszSystemInfo!=0;i++)[/quote] 真的很感谢,我以前一行程序都没有写过,所以给添麻烦了。 |
|
|
15楼#
发布于:2002-08-09 15:15
靠,还是没显示出来,疯了
|
|
|
16楼#
发布于:2002-08-09 15:19
给分,感谢trent的无私。
|
|
|
17楼#
发布于:2002-08-09 15:21
有这种的话,关掉 BBCode功能。
|
|
18楼#
发布于:2002-08-09 15:25
[url]http://www.driverdevelop.com/forum/html_19006.html?1028877885 [/url]
|
|