fprintf и fputs игнорируют '\' в строке при записи ее в файл - PullRequest
0 голосов
/ 15 марта 2012

Если моя строка содержит:

a="abd\\aa\[1\]\\"

и если я пытаюсь записать его в файл, используя fputs и fprintf, он записывает в файл следующее:

"abd\aa[1]\"

Я хочу, чтобы "abd\\aa\[1\]\\" было записано в файл. Как мне это сделать?

Ответы [ 5 ]

2 голосов
/ 15 марта 2012

Вы должны сбежать от вашего \, вот так:

printf("abd\\a[1]\\");

Или printf напечатает \a, который является символом BEL.

1 голос
/ 15 марта 2012

Символ \ является специальным символом. Попробуйте это так:

a = "abd\\aa[1]\\";

EDIT

Если вы хотите, чтобы "abd\\\\aa\\[1\\]\\\\" было записано в файл, вы должны удвоить каждый обратный слеш:

a = "abd\\\\\\\\aa\\\\[1\\\\]\\\\\\\\";
1 голос
/ 15 марта 2012

Используйте double \, потому что \ является escape-символом:

a = "abd\\aa[1]\\"
0 голосов
/ 15 марта 2012

Когда вы помещаете '\' в строку, следующий символ будет игнорироваться.Если вы поставите '\' перед '\', функции секунд будут игнорироваться и печататься.

0 голосов
/ 15 марта 2012

Я хочу, чтобы "abd\\\\aa\\[1\\]\\\\" было записано в файл.

Просто удвойте количество обратных косых черт.

fprintf(fp, "abd\\\\\\\\aa\\\\[1\\\\]\\\\\\\\" );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...