C语言错误之字符串的输出

tech2024-05-12  77

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> struct Person { char name[20]; int num; char sex; }; int main() { struct Person person = { "lalala",19,'M' }; printf("%s,%d,%c", person.name[20], person.num, person.sex); return 0; }

代码看似正确,但输不出结果,原因是在此处犯了一个非常简单的错误。

如何查错:debug 错因:倒数第三行,字符串输出时错误; 因为字符串在C语言中是以数组的形式进行存储的,而数组又是一段连续的内存空间。在进行输出时,只需向编译器传入字符串首地址即可输出。

而倒数第三行 person.name[20]是将字符串最后一个字母(即第21个元素)进行输出,与%s不符,所以导致编译错误。

关于字符串的小知识点

C语言中没有字符串类型的数据,所以只能通过数组的形式进行存放。字符数组的输入: char c[20] ; scanf("%s",c);//此处不需要加&,因C语言数组名表示该数组第一个元素的首地址 字符数组的输出: printf("%s",c);
最新回复(0)