【发布时间】:2015-03-03 20:32:07
【问题描述】:
如果一个输入比您想要的长,我无法正确使用 do-while 循环来继续询问另一个字符串。输入一个太大的字符串后,程序需要另一个,但在我输入一个可接受的字符串后,程序崩溃而不是正常退出,这是为什么呢?这只是更大程序的一部分代码。另外,我对 C 比较陌生。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STRING_MAX 100
int main()
{
//Declaration of variables
char temp_input[STRING_MAX];
//Read input
do
{
scanf("%s", temp_input);
}while(strlen(temp_input)>STRING_MAX);
return 0;
}
感谢大家的帮助!!
【问题讨论】:
-
你明白
strlen()是做什么的吗? -
是的,它返回字符串输入的长度,不是吗? @iharob
-
没错,那怎么可能是
>STRING_MAX? -
哦是的.. 但是当我输入一个比这更长的字符串时它是如何循环的?
-
scanf不在乎。很高兴将 150 个字符写入 100 个字符的缓冲区,之后程序所做的任何事情 纯属偶然。一旦你覆盖了记忆,你就没有权利期待任何特定的行为。
标签: c string input do-while string-length