检查 C 字符串中的 "end of line"

标签 c

我想从用户那里获取最大长度为 30 个字符的字符串作为输入,并检查它是否包含行尾。

这是我到目前为止尝试写的内容:

int main(void) {
int i;
char* command = (char*)calloc(31, sizeof(char));
while (0 < 1) {
    scanf("%s", command);
    for (i = 0; i <= strlen(command); ++i) {
        if (command[i] == '\n')
            printf("here");
    }
    if (strcmp(command, "quit") == 0)
        break;
}

想法是检查用户作为输入给出的命令是否“合法”——即长度 < 31。 当我运行这段代码时,无论输入的长度如何,它都不会打印“此处”。

最佳答案

这是因为 scanf() 不包括换行符,它认为它是空格并使用空格来分隔它转换的值。只需使用 strlen() 的返回值。

关于检查 C 字符串中的 "end of line",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10901195/

相关文章:

c++ - OpenGL:无法绘制由存储在 SSBO 中的计算着色器生成的顶点

c - 位集 vector int k 在 C 中超出范围

c - 获取数字的位数

c++ - 为什么不推荐使用 isascii()?

c++ - 有人可以清楚地解释这段代码的作用吗? - OpenGL 和 SDL

c - C 中没有写权限就写入文件?

c - 自定义 malloc() 中的无限循环

c++ - MPI:如何限制对文件系统的访问?

python - PyImport_Import 与导入

c++ - "munch"是什么?它是如何与 cfront 一起使用的