fgets函数 sprintf函数

这里写目录标题

fgets函数

char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
第一个参数为数据存放的数组,第二个参数为最大长度,第三个参数为输入源,我们从键盘读入,参数为stdin

可以看到fgets()读取的字符串长度包含了结尾的 ‘\0’,遍历数组时要注意下标越界。strlen(A)-1 为字符串实际长度
LINUX换行是\n,十六进制数值是:0A
通过一个程序

	char A[7];
    fgets(A,7,stdin);
    char *S="hello";
    int lengthA = strlen(A)-1;
    printf("A=%d\n",strlen(A));
    printf("S=%d\n",strlen(S));
    printf("lenA:%d\n",lengthA);
    printf("start: %c\n",A[0]);
    printf("end: %c\n",A[lengthA-1]);
        int j;
    		for (j=0;j<strlen(A);j++)
		{
			printf("A[%d]:%d %c\n",j,A[j],A[j]);
		}

我们使用该函数 当数据不满的时候输入123
输出的结果表示为
在这里插入图片描述
第一种情况strlen一共有4个 分别为1 2 3 和\n
如果输入的字符串长度没有超过 n–1,那么系统会将最后输入的换行符 ‘\n’ 保存进来 在第一种情况下最后一个数是A[lengthA-1] 因为没有超过的情况下默认最后一个为/n
在这里插入图片描述

第二种情况 数据超过或者刚好等于n-1 数据就会进行截取 保留数据部分
在这种情况下 最后一个数据就是A[lengthA] 因为这是的数据倒数第二位不是\n

1.若有定义char s[5] = { 'h', 'e', 'l', 'l', 'o' };printf(%s”,s);的输出结果为( )
A、输出字符串hello后乱码
B、hello
C、h
D、输出数组s的地址
//A 以%s输出字符数组s,会输出字符串,但数组大小为5,结尾没有’\0’结束符,会出现乱码

2.若有定义和语句:
char s[10]; s="abcd"; printf("%s\n",s);
那么结果是(以下u代表空格)(   )。
A、输出abcd
B、输出a
C、输出abcduuuuu
D、编译不通过
//D 字符数组不能直接赋入字符串,只能在初始化时赋入字符串。
以下选项中,不能正确赋值的是(   )。
A、char s1[10];s1="Ctest";
B、char s2[]={'C', 't', 'e', 's', 't'};
C、char s3[20]="Ctest";
D、char *s4="Ctest\n"
//字符数组只能在初始化时才能用等号赋入字符串。

sprintf函数

include <stdio.h>
#include <string.h>

int main() {
        char str[20];
        char *str1="/dev/pin";
        int pin = 4;
        sprintf(str,"%s%d",str1,pin);
        printf("%s\n",str);
    return 0;
}

输出结果/dev/pin4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值