首页 文章

将带换行符的字符串写入文本文件c

提问于
浏览
0

首先,我还没有找到这个问题的直接答案 . 我想创建一个程序来读取其中包含换行符 \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 回答

  • 1

    有很多简单的方法可以做你想要的但我真的需要示例如何输入(sd_value)你所说的意味着字符串sd_value包含:HELLO欢迎BYE ....并且永远不会做换行

    答案如果像我想的那样:

    每次你读一个字符串结束它

    *sd_value += "\n";*
    

    如果要处理很多行,使用 stringstream 可能会更有效 .

    ostringstream lines;
    
    lines << "Line 1" << endl;
    lines << "Line 2" << endl;
    
    cout << lines.str();   // .str() is a string
    
  • 1

    操作系统之间存在差异,为 EOL (行尾)选择符号,e . G .

    • Windows: \r\n

    • Linux: \n

    • MacOS: \r

    这意味着如果你有一个操作系统(例如MacOS)中的 sd_value 符号,你将使用你的命令

    fprintf(fd, "%s",sd_value.c_str());
    

    在其他操作系统(例如Windows)中,该 EOL 符号可能不会在目标操作系统中被解释为 EOL ,并且您的整个字符串将被写入一行 .

相关问题