【问题标题】:split a multi-line string in C在C中拆分多行字符串
【发布时间】:2016-07-03 06:29:54
【问题描述】:

如何在 const char* 数组中拆分多行字符串?

这是输入字符串。

const char* str = "122.123,-38.789"
                  "122.123,-39.78";

我需要从中获取两个字符串。

str1 = "122.123,-38.789";

str2 = "122.123,-39.78";

输出

printf("string='%s'", str)

string='122.123,-38.789122.123,-39.78'

如何拆分这个字符串?

【问题讨论】:

  • 如果您不使用分隔符或其他东西以某种方式分隔字符串,则无法执行此操作。你这样做的方式,两个字符串被合并为一个,因为没有分隔符,所以也没有退路。
  • 你能控制str的声明吗?您可以在末尾添加换行符或其他分隔符吗? "122.123,-38.789\n",例如
  • @BrianCain,不,我不能修改 str。它由用户设置。我猜输入必须被认为是无效的。
  • 这里有些不对劲。是用户设置还是const char*?你能发布一些更接近真实代码的东西吗?

标签: c string split multilinestring


【解决方案1】:

使用 char * 数组

#include <stdio.h>
const char* str[] = { "122.123,-38.789" ,  "122.123,-39.78" };

int main(){
  printf("%s\n%s\n",str[0],str[1] );
  return 0;
}

编译器如何理解您的代码:

C 预处理器将字符串连接在一起,

const char* str = "122.123,-38.789"
                  "122.123,-39.78";

字符串之间的换行符被解析为空白,被视为空格或制表符。所以相当于:

const char* str = "122.123,-38.789" "122.123,-39.78";

预处理器转换成的

const char* str = "122.123,-38.789122.123,-39.78";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 2021-08-12
    相关资源
    最近更新 更多