【发布时间】:2017-08-01 09:17:44
【问题描述】:
我已经有几年没有编程了,我有一个问题要问sscanf:
我想使用sscanf 将一个字符串分成几个,但是sscanf 在一个循环中给了我分段错误。这是为什么?我怎样才能在一个循环中使用sscanf 而不会发生?
例子:
int main() {
char str[100];
char mat[100][100]; int i = 0;
strcpy(str, "higuys\nilovestackoverflow\n2234\nhaha");
while (sscanf(str, "%s", mat[i]) == 1) i++;
}
【问题讨论】:
-
把这个:
while(sscanf(str,"%s", mat[i]) == 1); i++;改成这个:while(sscanf(str,"%s", mat[i]) == 1) i++; -
别忘了在 strcpy 行的字符串后面加上一个 "。
-
这里有一个错字。您的代码只是一个无限循环。它不会/不能出现段错误。
-
这就是我们复制/粘贴而不是重新输入源的原因。如果您不提供minimal reproducible example,我们将无法帮助您解决问题
-
@Jean-FrançoisFabre 原始代码在 while 之后有一个杂散的
;,这意味着 while 循环不包含增量语句。
标签: c segmentation-fault cycle scanf