检查字符串是否包含换行符
Check if String Contains New Line character
我在逐行处理文件时使用 fgets()
和字符数组缓冲区。如果遇到新行,缓冲区数组是否会在其最后位置包含字符 '\n'
?
当文件开始换行时,fgets()
是否将 '\n'
存储在缓冲区中?如果没有,我该如何检查它们?
是的。 fgets()
扫描尾部 \n
并将其存储在目标缓冲区中(如果源缓冲区中存在的话)。
引用手册页,
Reading stops after an EOF or a newline. If a newline is read, it is stored into the buffer.
所以,回答您的问题
Check if String Contains New Line character [...] when a file starts a newline
你也可以
strchr()
和 \n
检查输入行是否包含 \n
anywhere
- 仅检查
buffer[0] == '\n'
的起始字节 [文件开始一个新行 大小写]。
是 fgets()
会读取 '\n'
字符(如果存在),要删除它,您可以这样做
char buffer[SIZE_OF_BUFFER];
size_t length;
/* * we assume that file is a valid 'FILE *' instance */
length = sizeof(buffer);
if (fgets(buffer, length, file) != NULL)
{
length = strlen(buffer);
if (buffer[length - 1] == '\n')
buffer[--length] = '[=10=]';
}
它的作用是检查 '\n'
是否出现在字符串的末尾,然后用 nul
终止符替换它。
char a[100];
size_t n;
fgets(a, sizeof(a),stdin);
n = strlen(a);
if (n > 0 && a[n - 1] == '\n')
a[n-1] = '[=10=]';
您可以检查缓冲区中是否有换行符,如上所示,并通过将换行符替换为 [=11=]
来抑制它
是的。如果遇到它,它会在行尾添加 '\n'
。
如果您想摆脱它,请比较数组索引并使用以下方法根据需要替换它。 (根据需要更改 '[=12=]'
)
if (arrayname[index] == '\n')
arrayname[index]='[=10=]';
我在逐行处理文件时使用 fgets()
和字符数组缓冲区。如果遇到新行,缓冲区数组是否会在其最后位置包含字符 '\n'
?
当文件开始换行时,fgets()
是否将 '\n'
存储在缓冲区中?如果没有,我该如何检查它们?
是的。 fgets()
扫描尾部 \n
并将其存储在目标缓冲区中(如果源缓冲区中存在的话)。
引用手册页,
Reading stops after an EOF or a newline. If a newline is read, it is stored into the buffer.
所以,回答您的问题
Check if String Contains New Line character [...] when a file starts a newline
你也可以
strchr()
和\n
检查输入行是否包含\n
anywhere- 仅检查
buffer[0] == '\n'
的起始字节 [文件开始一个新行 大小写]。
是 fgets()
会读取 '\n'
字符(如果存在),要删除它,您可以这样做
char buffer[SIZE_OF_BUFFER];
size_t length;
/* * we assume that file is a valid 'FILE *' instance */
length = sizeof(buffer);
if (fgets(buffer, length, file) != NULL)
{
length = strlen(buffer);
if (buffer[length - 1] == '\n')
buffer[--length] = '[=10=]';
}
它的作用是检查 '\n'
是否出现在字符串的末尾,然后用 nul
终止符替换它。
char a[100];
size_t n;
fgets(a, sizeof(a),stdin);
n = strlen(a);
if (n > 0 && a[n - 1] == '\n')
a[n-1] = '[=10=]';
您可以检查缓冲区中是否有换行符,如上所示,并通过将换行符替换为 [=11=]
是的。如果遇到它,它会在行尾添加 '\n'
。
如果您想摆脱它,请比较数组索引并使用以下方法根据需要替换它。 (根据需要更改 '[=12=]'
)
if (arrayname[index] == '\n')
arrayname[index]='[=10=]';