【问题标题】:How can I read this line in the C language如何用 C 语言阅读这一行
【发布时间】:2013-10-11 23:58:45
【问题描述】:

我正在用 C 语言编写,我正在尝试阅读这一行:

phillip.allen@enron.com -> tim.belden@enron.com at 989883540

我想要 4 个单独的字符串:

sender_username: phillip.allen
sender_hostname: enron.com
receiver_username: tim.belden
receiver_hostname: enron.c

我想去掉文本中的“at 989883540”部分。

我正在使用这种转换:

"%49[^@ ]@%49s -> %49[^@ ]@%49s"

我似乎得到了发件人用户名和主机名,所以电子邮件的第一部分在 -> 符号之前,但我无法阅读 tim.belden 部分的接收者部分。

【问题讨论】:

  • 嘿!这就是安然电子邮件语料库!

标签: c string text file-io


【解决方案1】:

用%49[^ ] 替换%49s 应该可以解决问题:

"%49[^@]@%49[^ ] -> %49[^@]@%49[^ ]"

这是demo on ideone。

【讨论】:

  • 哇,这确实有效,谢谢。现在我有几个问题。为什么不包含 %s 4 次作为转换说明符?它怎么知道要寻找什么?
  • @user2817240 %49[^@] 和 %49[^ ] 是有效的转换说明符,scanf 知道首先查找 @,然后停止,然后使用 @,然后使用所有内容直到跟随空格,等等。
  • 好的,有手册或其他地方可以阅读吗?
  • @user2817240 Absolutely! 还有this site 有一张方便的桌子。第二个站点是 C++ 的,但格式相同。
  • @user2817240 欢迎您。如果这解决了您的问题,请考虑通过单击旁边的复选标记来接受答案。这将向其他网站访问者表明您不再积极寻找改进的解决方案,并为您赢得 Stack Overflow 上的新徽章。
猜你喜欢
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多