首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串中的C字符串指针是如何以空结尾的?

字符串中的C字符串指针是如何以空结尾的?
EN

Stack Overflow用户
提问于 2017-10-21 15:59:55
回答 1查看 519关注 0票数 0

假设我有一个具有参数-值对的C字符串ch

代码语言:javascript
复制
#include <string.h>
char ch[] = "name=John sex=male age=30"; // null-terminated C string
char *p, *v; // pointers to parameter and value

p = strstr(ch, "sex="); // p now points to "sex=male age=30"
sscanf(p, "sex=%s", v); // get the value for sex
printf("sex = %s\n", v); // gives "male", works as expected
printf("length of v is %i\n", strlen(v)); // gives 4
printf("is v null-terminated? %i\n", (*(v+4)=='\0')); // gives 1

我的理解是,p指向ch中的"sex=M age=30“,并使用与ch相同的空终止符。v v指向p中的“男性”,my的问题是的空终止符在哪里存储?在pch中,它都是“男性”后面的空格,在这里,v是指针,而不是缓冲区。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-21 16:07:55

我的问题是v的空终止符存储在哪里?

没有。您正在调用https://en.wikipedia.org/wiki/Undefined_behavior,因为v未初始化。不仅null终止符,而且sscanf()将“男性”写入v所指向的位置都是无效的。因为v没有指向有效的内存位置。

sscanf()将执行空终止,但您必须传递一个有效的指针(例如char v[5])。注意,sscanf()根本没有修改它的第一个参数。所以ch不会被sscanf()修改。

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

https://stackoverflow.com/questions/46865111

复制
相关文章

相似问题

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