一:
数组名即数组第一个元素的地址。
#include
//int main()
//{
// int a;
// int *p = &a; //&a表示把a的地址的数值赋予给p
// printf("请输入一个整数:");
// scanf("%d",&a); // 取来存放的地址,将数值放进去
// printf("a= %dn",a);
//
// printf("请重新输一个整数:");
// scanf("%d",p); //&p是指针本身的地址 ,p本身就是a的地址
// printf("a= %dn",a);
//
// return 0;
// }
int main()
{
char a[] = "pangou";
// 数组名就是数组第一个元素的地址
char *p = a; // a是一个指向 &a[0]的指针,即数组a的第一个元素的地址
printf("*p = %c,*(p+1) = %c,*(p+2) = %cn",*a,*(a+1),*(a+2));
printf("*p = %c,*(p+1) = %c,*(p+2) = %cn",*p,*(p+1),*(p+2));
return 0;
}
二:
fgets 函数用于从指定文件中读取字符串。
fgets 函数最多可以读取 size - 1 个字符,因为结尾处会自动添加一个字符串结束符 ' '。当读取到换行符('n')或文件结束符(EOF)时,表示结束读取('n' 会被作为一个合法的字符读取)。
注意:计算长度的时候,n也会被计入进去。
char *fgets(char *s, int size, FILE *stream);
| 参数 | 含义 |
| s | 字符型指针,指向用于存放读取字符串的位置 |
| size | 指定读取的字符数(包括最后自动添加的 ' ') |
| stream | 该参数是一个 FILE 对象的指针,指定一个待操作的数据流 |
fget() 函数中的 size 如果小于字符串的长度,那么字符串将会被截取;如果 size 大于字符串的长度则多余的部分系统会自动用 ‘ ’ 填充。所以假如你定义的字符数组长度为 n,那么 fgets() 中的 size 就指定为 n–1,留一个给 ‘ ’ 就行了。
但是需要注意的是,如果输入的字符串长度没有超过 n–1,那么系统会将最后输入的换行符 ‘n’ 保存进来,保存的位置是紧跟输入的字符,然后剩余的空间都用 ‘ ’ 填充。所以此时输出该字符串时 printf 中就不需要加换行符 ‘n’ 了,因为字符串中已经有了。
#include
#define MAX 1024
int main()
{
char str[MAX];
char *target = str;
int length = 0;
printf("请输入一个字符串:");
fgets(str, MAX, stdin);
while (*target++ != ' ')
{
length++;
}
printf("您总共输入了 %d 个字符!n", length - 1);
return 0;
}
int main()
{
char str[MAX];
char *target = str;
char ch;
int length = 0;
printf("请输入一个字符串");
fgets(str,MAX,stdin);
while(1)
{
ch = *target++;
if (ch == ' ')
{
break;
}
if ((int)ch < 0)
{
target +=1;
}
length++;
}
printf("%dn",length-1);
return 0;
}
// 以下代码证明每个中文字符在我电脑系统占3个字节的存储空间;
三:
int main()
{
char str1[MAX];
char str2[MAX];
char *target1 = str1;
char *target2 = str2;
char ch ;
int n ;
printf("请输入一个字符串到 str1中:");
fgets(str1,MAX,stdin);
printf("请输入需要拷贝的字符个数:");
scanf("%d",&n);
printf("开始拷贝str1 的内容到 str2 中...n");
while (n--)
{
ch = *target2++ = *target1++;
if (ch == ' ')
{
break;
}
if ((int)ch < 0)
{
*target2++ = *target1++;
}
}
*target2 = ' '; //字符串一般以 结尾
printf("拷贝完毕");
printf("现在 ,str2中的内容是:%sn",str2);
return 0;
}
四:
while (n-- && (*target2++ = *target1++) != ' ')
实现 strncpy 函数的功能



