用指针打印字符串长度(指针 & fgets函数)

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #define MAX 1024
 5
 6 int main(){
 7  //用指针打印字符串长度
 8  char str[MAX];
 9  char *target = str;
10  int length = 0;
11
12  printf("请输入一个字符串:");
13  fgets(str, MAX, stdin);
14
15 //fgets(字符数组,数组长度,stdin), stdin是标准输入
16
17  while (*(target++) != ‘\0‘){
18   length++;
19  }
20  printf("您输入了%d个字符\n", length - 1);
21  //由于fgets函数会读取到回车,因此length - 1
22
23  system("pause");
24  return 0;
25 }

原文地址:https://www.cnblogs.com/Leafbud/p/12638562.html

时间: 2024-10-10 07:06:19

用指针打印字符串长度(指针 & fgets函数)的相关文章

笔试题: 不使用中间变量求const字符串长度,即实现求字符串长度库函数strlen函数

笔试题: 不使用中间变量求const字符串长度,即实现求字符串长度库函数strlen函数. 函数接口声明如下:int my_strlen(const char *p); strlen函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符'\0'. 而返回的长度大小不包括'\0'. #include <stdio.h> #include <assert.h> //使用中间变量 //int my_strlen(const  char *str) //{ //   ass

C++——指针---指向数组的指针---指向字符串的指针--指向函数的指针--指针的指针--指针的引用

一.指向数组的指针 代码示例1: 1 int main() 2 { 3 int a[10]={0,2,4,6,8,10,12,14,16,18}; 4 int *p; 5 for(p=&a[0];p<&a[0]+10;p++) 6 printf("%d ",*p); 7 } 代码示例2: int a[10]={0,2,4,6,8,10,12,14,16,18}; int *p; p=a; printf("%d\n",*(a+5));//注意加括

指针进阶 - 字符串与指针 &amp; 数组与指针

昨天的随笔里忘记提的重要一点: 指针指向的地址是有长度的,但是指针就是个针,一个针只有一个针尖,只能指向一个地址. 当我们用这种方式测量指针长度时 char *pstring; printf("%d\n", sizeof(*pstring)); 实际上我们测的不是指针占据的内存大小,而是指针指向的数据占据的内存大小,哪怕为空.由于代码中是char型,所以输出结果为1. 当我们测量却忘记带 * 号时,如: printf("%d\n", sizeof(pstring))

字符串处理 语句、函数

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4292967.html 字符串处理... 79 “空字符”.“空字符串”.''与``79 为什么''=`` ?. 80 字符型字面常量(Text Symbols文本符号)80 字符串型字面常量... 80 split拆分字符串... 81 s

宽字符与Unicode (c语言 汉语字符串长度)

在C语言中,我们使用char来定义字符,占用一个字节,最多只能表示128个字符,也就是ASCII码中的字符.计算机起源于美国,char 可以表示所有的英文字符,在以英语为母语的国家完全没有问题. 但是世界上存在很多不同的语言,例如汉语.汉语.日语等有成千上万个字符,需要用多个字节来表示,称之为宽字符(Wide Character).Unicode 是宽字符编码的一种,已经被现代计算机指定为默认的编码方式,Windows 2000以后的操作系统,包括Windows 2000.XP.Vista.Wi

指针 指针与数组 指针与字符串 指针与函数 结构体与指针 宏

指针 指针与数组 指针与字符串 指针与函数?? 指针与数组 1.数组名:数组元素首地址 eg: int array[3]={1,3,6}; 这里array 恒等于&array[0] 2.int *p = a; int *p = 0; int a[]={0}; 3.int *p = a; 均指向数组的首地址 *p是? *(p+1)是?(*p)+1是? *(p+1)决定向下移动几个字节是类型 4.指针可以当数组名使用 p[1] = 3; 恒等于a[1] ;恒等于*(p+1);恒等于*(a+1) 5.

cout 输出字符串(指针)常见问题及put,write函数

C++ ostream类为下面的指针类型定义了插入运算符函数: const signed char *; const unsigned char *; const char *; void *; C++用指向字符串存储位置的指针来表示字符串,指针的形式可以是char数组名,显式的char指针或用引号括起来的字符串. 下面是一个简单输出字符串的例子: #include <iostream> using namespace std; int main() { char name[] = "

数组、字符串在指针和函数中的一些经验总结

这篇主要是记录一下今天下午的坑和教训. 1.对于多维数组,在函数原型声明的形式是 void funct(int arr[ ][10]) 或 void funct (int (*arrp)[10]),后面的数字10必须要指定.不能以 void funct( int arr[ ] [ ]) 或 void funct (int **arr)等其他形式来声明带多维数组参数的函数原型. 而数组在首次声明时必须要指定维数,如 int arr[2]; 不能是 int arr[ ].除非是后面带初始化的数,如

终于懂了:Delphi的函数名不是地址,取地址必须遵守Object Pascal的语法(Delphi和C的类比:指针、字符串、函数指针、内存分配等)good

这点是与C语言不一样的地方,以前我一直都没有明白这一点,所以总是不明白:函数地址再取地址算怎么回事? ---------------------------------------------------------------------------------------------------------------- 在学习Delphi的时候,一个很好的建议是和C/C++去类比着学习,从指针,到内存管理,到数组,到面向对象……各个方面,都是有很多可以相似和或者也有不同的方,类比着学习,一