【发布时间】:2018-11-06 21:01:55
【问题描述】:
我有这个函数可以检查字符串是否是这样的:
void get_string(char *prompt, char *input, int length)
{
printf("%s", prompt);
fgets(input, length, stdin);
if (input[strlen(input) - 1] != '\n')
{
int dropped = 0;
while (fgetc(stdin) != '\n')
{
dropped++;
}
if (dropped > 0)
{
printf("Errore: Inserisci correttamente la stringa.\n");
get_string(prompt, input, length);
}
}else{
input[strlen(input) - 1] = '\0';
}
return;
}
只有当字符串长于length时,我才能重复输入。
如果我还必须检查字符串是否更短,我该怎么办?
【问题讨论】:
-
@AjayBrahmakshatriya 通过删除末尾的(可能的)换行符来截断字符串。
-
@Someprogrammerdude 我的坏,忽略了条件。谢谢。
-
您还需要更改您的函数
type以提供有意义的返回来指示成功/失败。char *get_string(...)将是一个不错的选择,允许您在出现错误时返回NULL,否则返回有效指针。您需要检查fgets的return - 此时可以生成手册EOF。
标签: c string string-length