本文介绍了字符串和sscanf的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
#include<stdio.h>
int main() {
char str[] = "My first book";
char *a, *b, *c;
sscanf(str, "%s %s %s", a, b, c);
printf("a=%s b=%s c=%s", a, b, c);
}
我想要输出:a =我的b =第一和c =书。我遇到段错误。为什么?
I want the output: a=My b=first and c=book. I am getting seg fault. Why?
推荐答案
您尚未初始化 a
, b
和 c
所以这样做
char a[100], b[100], c[100]
此外,您还需要检查 sscanf
的返回值-请查看手册页
Also you need to check the return value from sscanf
- Please check out the manual page
格式字符串不正确
"%[^ ] %[^ ] %[^ ]"
详细信息也在手册页上
编辑
如果您不知道字符串的长度,请这样做
If you do not know the length of the string then do
char *a, *b, *c;
size_t len = strlen(str) + 1;
a = malloc(len);
b = malloc(len);
c = malloc(len);
...
free(a);
free(b):
free(c);
这篇关于字符串和sscanf的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!