黑马程序员技术交流社区
标题:
C语言字符串指针
[打印本页]
作者:
靳小龙
时间:
2015-9-6 09:32
标题:
C语言字符串指针
在C语言中,可以通过字符数组存放一个字符串,也可以用字符指针指向一个字符串。
【示例】用字符数组存放一个字符串,然后输出该字符串。
#include
<stdio.h>
int
main
()
{
char
string
[]
=
"I love China!"
;
printf
(
"%s
\n
"
,
string
);
return
0
;
}
和前面介绍的数组属性一样,string是数组名,它代表字符数组的首地址。
【示例】用字符串指针指向一个字符串。
#include
<stdio.h>
int
main
()
{
char
*
string
=
"I love China!"
;
printf
(
"%s
\n
"
,
string
);
return
0
;
}
对指向字符变量的指针变量应赋予该字符变量的地址。如:
char c, *p=&c;
表示p是一个指向字符变量c的指针变量。而:
char *s="C Language";
则表示s是一个指向字符串的指针变量。把字符串的首地址赋予s。
上例中,首先定义string是一个字符指针变量,然后把字符串的首地址赋予string(应写出整个字符串,以便编译器把它装入一块连续的内存单元)。程序中的:
char *string = "I love China!";
等效于:
char *string;string = "I love China!";
【示例】输出字符串中n个字符后的所有字符。
#include
<stdio.h>
int
main
()
{
char
*
ps
=
"This is a good tutorial!"
;
int
n
=
10
;
ps
=
ps
+
n
;
printf
(
"%s
\n
"
,
ps
);
return
0
;
}
运行结果为:
good tutorial!
在程序中对ps初始化时,把字符串首地址赋予ps,当ps= ps+10之后,ps指向字符
'b'
,因此输出为 "good tutorial!"。
【示例】在输入的字符串中查找有无‘k’字符。
#include
<stdio.h>
int
main
()
{
char
str
[
20
],
*
ps
;
int
i
;
printf
(
"Input a string: "
);
ps
=
str
;
scanf
(
"%s"
,
ps
);
for
(
i
=
0
;
ps
[
i
]!=
'
\0
'
;
i
++)
{
if
(
ps
[
i
]==
'k'
)
{
printf
(
"There is a 'k' in the string!
\n
"
);
break
;
}
}
if
(
ps
[
i
]==
'
\0
'
)
printf
(
"There is no 'k' in the string
\n
"
);
return
0
;
}
运行结果:
Input a string: thank you
There is a 'k' in the string!
【示例】不使用 strcpy 函数实现字符串的复制。
#include
<stdio.h>
void
cpystr
(
char
*
pss
,
char
*
pds
)
{
while
((*
pds
=*
pss
)!=
'
\0
'
)
{
pds
++;
pss
++;
}
}
int
main
()
{
char
*
pa
=
"Apple, Samsung, Xiaomi, Smartisan"
,
b
[
100
],
*
pb
;
pb
=
b
;
cpystr
(
pa
,
pb
);
printf
(
"string a=%s
\n
string b=%s
\n
"
,
pa
,
pb
);
return
0
;
}
运行结果:
string a=Apple, Samsung, Xiaomi, Smartisan
string b=Apple, Samsung, Xiaomi, Smartisan
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2