sscanf()以换行符作为分隔符

时间:2015-05-31 17:53:33

标签: c++ c

在以下代码中,scanf()将在遇到任何空格时拆分字符串:

char str[] = "Hello I'm Tom";

char token1[256];
char token2[256];
char token3[256];

sscanf(str, "%s%s%s", token1, token2, token3);

我是否只能在遇到换行符(\n)时拆分字符串?

2 个答案:

答案 0 :(得分:3)

您可以使用istringstream::getline

#include <iostream>
#include <sstream>

using namespace std;
int main()
{
  std::istringstream input("Hello I'm Tom\nHello I'm Jim\nHello I'm Tim");
  char token1[256];
  char token2[256];
  char token3[256];
  input.getline(token1, 256);
  input.getline(token2, 256);
  input.getline(token3, 256);
  cout << token1 << endl;
  cout << token2 << endl;
  cout << token3 << endl;
  return 0;
}

答案 1 :(得分:1)

您可以使用scanf(),如下所示:

scanf("%99[^\n]",comment); 

但请尝试使用fgets

fgets(comment, sizeof comment, stdin);

或使用gets()getline()函数从stdin读取字符串。