首先,我还没有找到这个问题的直接答案 . 我想创建一个程序来读取其中包含换行符 \n
的字符串,并使用 fprintf()
函数将内容写回SD卡上的文本文件 . 我的编译器是 ARM_GCC
,我正在使用一个只有 fprintf()
和 fwrite()
来编写字符串的特定库,所以我更喜欢只使用这些函数,但是如果你认为还有另一种方式我会很感激,如果你这样说的话 . 我可以轻松地使用此程序将字符串写入文件:
void sd_open(string sd_value)
{
printf("Writing to Sd card...");
FILE* fd = fopen("/sd/numbers.txt", "w+");
fprintf(fd, "%s",sd_value.c_str());
fclose(fd);
printf("writed this value to sd: %s\r\n", sd_value.c_str());
printf("Done\n");
}
问题是这段代码只将 sd_value
的值写入一行,我试着使用for循环来搜索字符串中的换行符并逐行写入文件,但我不知道如何实现它 . 谢谢 .
编辑...假设 sd_value
是这样的:
string sd_value="Hello\nWelcome\nBye"
必须将以下内容存储到文本文件中:
Hello
Welcome
Bye
实际上, sd_value
在我的程序中没有处理,用户在另一个应用程序中键入一个值,我将其作为字符串接收 . 我可以告诉用户在他的文本框中使用\ n来输入换行符,但不知道如何在代码中将其视为换行符 .
2 回答
有很多简单的方法可以做你想要的但我真的需要示例如何输入(sd_value)你所说的意味着字符串sd_value包含:HELLO欢迎BYE ....并且永远不会做换行
答案如果像我想的那样:
每次你读一个字符串结束它
如果要处理很多行,使用
stringstream
可能会更有效 .操作系统之间存在差异,为
EOL
(行尾)选择符号,e . G .Windows:
\r\n
Linux:
\n
MacOS:
\r
这意味着如果你有一个操作系统(例如MacOS)中的
sd_value
符号,你将使用你的命令在其他操作系统(例如Windows)中,该
EOL
符号可能不会在目标操作系统中被解释为EOL
,并且您的整个字符串将被写入一行 .