首先,我不知道我的问题是否已被提出,但我搜索了很多,并没有找到这个问题的直接答案。
我想创建一个程序来读取其中包含换行符\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输入换行符,但不知道如何将其作为代码中的换行符处理。
答案 0 :(得分:1)
有很多简单的方法可以做你想要的但我真的需要示例如何输入(sd_value) 你在说什么意味着字符串sd_value包含:你好欢迎再见.... 并且永远不要换行
每次阅读字符串时都会以
结尾*sd_value += "\n";*
如果要处理很多行,使用stringstream
可能会更有效。
ostringstream lines;
lines << "Line 1" << endl;
lines << "Line 2" << endl;
cout << lines.str(); // .str() is a string
答案 1 :(得分:1)
操作系统之间存在差异,为EOL
(行尾)选择了符号,e。克。
\r\n
\n
\r
这意味着,如果您有sd_value
来自一个操作系统(例如MacOS)的EOL
符号,您将使用您的命令
fprintf(fd, "%s",sd_value.c_str());
在其他操作系统(例如Windows)中,有可能此EOL
符号在目标操作系统中不会被解释为EOL
,并且您的整个字符串将写在一行中。