[英]how to read newline character in c
有人可以解釋以下代碼
#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
。
如果要在用戶輸入中支持轉義序列 ,則需要對任何用戶輸入進行后處理,以創建適當的轉義序列。
/* 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;
在字符串文字中或作為char const,'\\ n'是一個字符,其中\\被稱為轉義字符。 但是作為輸入,“ \\”是一個實字符而不是轉義字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.