编程论坛
注册
登录
编程论坛
→
C++教室
一个关于指针的问题
宇智波曌
发布于 2011-05-18 17:53, 499 次点击
输入 :****A*BC*DEF**G*******
输出 : ****ABCDEFG
怎么用指针编写
7 回复
#2
yuccn
2011-05-18 23:39
不知道你的输入 处理* 和 A-Z ,还有什么字符。如果只是有 * 和A - Z,那就好办,如果有其他的,你就要做额外的过滤了
// 先保存 ****A*BC*DEF**G******* 到 字符数字中,比如:
char szBuffer[256] = {"****A*BC*DEF**G*******"};
char *pTraver = szBuffer;
bool bFindFirstNumber = false;
while (*pTraver != '\0') {
if (!bFindFirstNumber) {
if ('A' < *pTraver || *pTraver < 'Z' ) {
bFindFirstNumber = true;
}
else {
// 输出字符 *pTraver
}
}
else {
if ('A' < *pTraver || *pTraver < 'Z' ) {
// 输出字符 *pTraver
}
}
pTraver++;
}
#3
宇智波曌
2011-05-19 12:55
回复 2楼 yuccn
bool bFindFirstNumber = false;
这表示什么意思啊
#4
lomey
2011-05-19 14:52
以下是引用
宇智波曌
在2011-5-19 12:55:48的发言:
bool bFindFirstNumber = false;
这表示什么意思啊
定义一个bool(布尔值)类型变量,bFindFirstNumber(变量名),并赋值(初始化)为false(假).
不知说的对不对.
#5
yuccn
2011-05-19 17:23
回复 3楼 宇智波曌
该变量用于标记是否遍历到第一个字母了。
#6
宇智波曌
2011-05-19 18:35
回复 5楼 yuccn
程序代码:
#include
<stdio.h>
#include
<string.h>
void
main()
{
char
s[
81
]=
"
****A*BC*DEF**G******
"
;
char
a[
81
]=
"
0
"
;
char
*p=s;
strncpy(a,s,
4
);
printf(
"
%s\n
"
,s);
printf(
"
===================================\n
"
);
printf(
"
%s
"
,a);
while
(*p!=
'
\0
'
)
{
if
(*p!=
'
*
'
)
printf(
"
%c
"
,*p);
p++;
}
printf(
"
\n
"
);
printf(
"
===================================\n
"
);
}
我是这样编写的,虽然可以得到想要的结果,但是我想把printf("%c",*p)输出的结果用 strcat 连接到数组 a 的后面,这个想法怎样实现啊!
#7
yuccn
2011-05-19 20:20
#include <stdio.h>
#include <string.h>
void main()
{
char s[81]="****A*BC*DEF**G******";
char a[81]="0";
char *p=s;
strncpy(a,s,4);
printf("%s\n",s);
printf("===================================\n");
printf("%s",a);
char *pTraver = a + 4;
while (*p!='\0')
{
if(*p!='*') {
printf("%c",*p);
*pTraver = *p;
pTraver++;
}
p++;
}
printf("\n");
printf("a = %s\n",a);
printf("===================================\n");
}
// 加上不同颜色的那些就行了
#8
宇智波曌
2011-05-20 22:13
回复 7楼 yuccn
谢啦!
1