零基础入门学习C语言009讲:指针(4)
字符串与指针
(1) 用字符数组存放一个字符串,然后输出该字符串。
例题一:定义一个字符数组,对它初始化,然后输出该字符串。
#include <stdio.h>
void main()
{
char string[] = "I love https://www.****.net/!";
printf("%s\n", string);
}
(注:\0 是字符串的结束符)。
(2) 用字符指针指向一个字符串
例题二:可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。
#include <stdio.h>
void main()
{
char *string = "I love https://www.****.net/!";
printf("%s\n", string);
}
字符串中字符的存取方法
对字符串中字符的存取,可以用下标方法,也可以用指针方法!
下标法举例:将字符串a复制为字符串b
#include <stdio.h>
void main()
{
char a[] = "www.****.net is a good web site!", b[40];
int i;
for (i = 0; *(a + i) != '\0'; i++)
{
*(b + i) = *(a + i);
}
*(b + i) = '\0';
printf("String a is: %s\n", a);
printf("String b is: ");
for (i = 0; b[i] != '\0'; i++)
{
printf("%c", b[i]);
}
printf("\n\n");
}
指针方法举例:将字符串a复制为字符串b
#include <stdio.h>
void main()
{
char a[] = "www.****.net is a good web site!", b[40], *p1, *p2;
int i;
p1 = a;
p2 = b;
for (; *p1 != '\0'; p1++, p2++)
{
*p2 = *p1;
}
*p2 = '\0';
printf("String a is: %s\n", a);
printf("String b is: ");
for (i = 0; b[i] != '\0'; i++)
{
printf("%c", b[i]);
}
printf("\n");
}
字符指针作函数参数
例题三:用函数调用实现字符串的复制
(1)用字符数组作参数
#include <stdio.h>
void main()
{
void copy_string(char from[], char to[]);
char a[] = "I am a teacher.";
char b[] = "You are a student.";
printf("string a = %s\nstring b = %s\n", a, b);
printf("copy string a to string b:\n ");
copy_string(a, b);
printf("\nstring a = %s\nstring b = %s\n", a, b);
}
void copy_string(char from[], char to[])
{
int i = 0;
while (from[i] != '\0')
{
to[i] = from[i];
i++;
}
to[i] = '\0';
}
(2)形参用字符指针变量
#include <stdio.h>
void main()
{
void copy_string(char *from, char *to);
char *a = "I am a teacher.";
char *b = "You are a student.";
printf("String a = %s\nString b = %s\n", a, b);
printf("copy string a to string b:\n");
copy_string(a, b);
printf("\nString a = %s\nString b = %s\n", a, b);
}
void copy_string(char *from, char *to)
{
for (; *from != '\0'; from++, to++)
{
*to = *from;
}
*to = '\0';
}
//丫的,出错了,为什么? WHY??
出错的原因下一个文章讲解。
大家可以先看一下这篇文章找一下答案: