首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASCII值=0和'\0‘

ASCII值=0和'\0‘
EN

Stack Overflow用户
提问于 2018-06-09 13:56:41
回答 1查看 4K关注 0票数 4

我读过this post。但当我尝试的时候:

代码语言:javascript
复制
  printf("before null %c after null\n", 0);  // (ASCII=0) != '\0' ??

而不是得到:

代码语言:javascript
复制
before null 

我得到了:

代码语言:javascript
复制
before null   after null

所以我的问题是:ASCII值0实际上等于'\0‘吗?

EN

回答 1

Stack Overflow用户

发布于 2018-06-09 14:57:34

当给定值0'\0'时,printf不会在%c格式说明符的该字符位置终止printf格式字符串。相反,nul的终端输出通常是占位符(例如,space等)

但是,您可以将格式插入到字符串中,然后使用%s格式说明符输出字符串,可以看到实际上十进制0实际上是等效ASCII字符'\0'的ASCII值,并且将在nul字符处终止字符串(参见:www.ASCIItable.com),例如

代码语言:javascript
复制
#include <stdio.h>

#define FMT "before null %c after null\n"

int main (void) {

    char buf[sizeof FMT * 2];

    puts (FMT);

    sprintf (buf, FMT, 0);
    printf ("using 0 : '%s'", buf);
    putchar ('\n');

    sprintf (buf, FMT, '\0');
    printf ("using \\0: '%s'", buf);
    putchar ('\n');

    return 0;
}

示例使用/输出

代码语言:javascript
复制
$ ./bin/str_printf_null
before null %c after null

using 0 : 'before null '
using \0: 'before null '
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50771351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档