以下代码应该从用户处获取字符串(包含存储中项目的数据)。
我无法让程序迭代到新行。当我推进"进入"但我需要它只是将下一行作为输入。代码:
for (i; i < STORE_SIZE; i++) {
fgets(seq, MAX_STRING_LEN, stdin);
if (strcmp(seq, "stop")) {
break;
}
else {
init(seq, ptr);
*(storage + i) = ptr;
}
}
程序应该在收到字符串时中止&#34;停止&#34;在下一行,而不是按Enter键。
答案 0 :(得分:4)
FileOutputStream
将始终将换行符添加到遇到它的缓冲区中。摆脱它的唯一方法是手动删除它,例如:
fgets
或者,更简洁但也许更容易混淆:
size_t len = strlen(seq);
if (len > 0 && seq[len - 1] == '\n')
seq[len - 1] = '\0';
strcspn()
函数查找第一个参数内第二个参数中第一个出现的任何字符,并返回该字符的索引,如果没有,则返回字符串结尾的索引找到了人物。
另外,请记住,如果字符串相等,strcmp()
将返回0。该函数用于词法上比较字符串。
此外,你的for循环的第一部分没有意义,你确定你不是这个意思:
seq[strcspn(seq, "\n")] = '\0';