栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数组名以及fget函数()模仿用法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数组名以及fget函数()模仿用法

一:

数组名即数组第一个元素的地址。

#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 函数的功能

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847793.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号