gpt4 book ai didi

c - 如何读取c中的换行符

转载 作者:太空狗 更新时间:2023-10-29 15:27:01 29 4
gpt4 key购买 nike

谁能解释一下下面的代码

#include<stdio.h>
main()
{
char c[]="abc\nabc";
puts(c);
}

此代码按预期生成:

abc
abc

但是当我尝试将相同的字符串作为用户输入时,

#include<stdio.h>
main()
{
char c[]="abc\nabc";
gets(c); // i type in "abc\nabc"
puts(c);
}

此代码生成:

abc\nabc

如何让程序正确读取换行符?

最佳答案

您是按字面意思输入 \ 然后输入 n 吗?

如果是这样,它会直接在您的字符串中放置一个 \ 然后是一个 n,就像您执行以下操作一样:

char c[] = "abc\\nabc"; /* note the escaped \ */

这在逻辑上不是换行符,而是 \ 后跟 n

如果你愿意支持escape sequences在用户输入中,您需要对任何用户输入进行后处理以创建适当的转义序列。

/* translate escape sequences inline */
for (i = 0, j = 0; c[i] != 0; ++i, ++j) {
if (c[i] == '\\' && c[i+1] != 0) {
switch(c[++i]) {
case 'n': c[j] = '\n'; break;
case '\\': c[j] = '\\'; break;
/* add the others you'd like to handle here */
/* case 'a': ... */
default: c[j] = ' '; break;
}
} else {
c[j] = c[i];
}
}

c[j] = 0;

关于c - 如何读取c中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14271474/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com