【发布时间】:2021-11-03 19:01:22
【问题描述】:
我做了一个非常简单的程序,它显示字符串名称的值,并在它旁边显示我的名字和笑脸
#include <stdio.h>
#include <stdlib.h>
int main()
{
char name[5] = "Rafik";
printf("%s", name);
}
它显示以下错误
Rafik☺
【问题讨论】:
标签: c visual-studio-code
我做了一个非常简单的程序,它显示字符串名称的值,并在它旁边显示我的名字和笑脸
#include <stdio.h>
#include <stdlib.h>
int main()
{
char name[5] = "Rafik";
printf("%s", name);
}
它显示以下错误
Rafik☺
【问题讨论】:
标签: c visual-studio-code
name 数组的大小不正确。它应该是 char name[6],因为 C 字符串文字(在您的情况下为 "Rafik")总是在末尾添加一个额外的字符,即 NULL 字符/终止符 '\0'。
这就是例如scanf 知道字符串结尾在哪里的方式。
【讨论】:
char name[4] 并带有-Wall 标志你会得到警告: 'char' 数组的初始化字符串太长
printf("%.5s", ...) 作为未终止的字符串来调用它?这是硬件受限操作系统中的用例,也是strncat 用零填充缓冲区的原因。
char name[] = "Rafik";