c - 在 C 中分隔可以有任意空格的字符串

标签 c whitespace c-strings

我有一个字符串数组,我需要将每个字符串分成几个不同的部分。该字符串可能有也可能没有任意空格和制表符。

Example string:
str[0]: "   apple  e     3   a     a fruit    "
I need it to become:
word[0] = "apple"
row[0] = "e"
column[0] = "3"
direction[0] = "a"
clue[0] = "a fruit"

所以我需要删除所有前导/尾随空格,以及字段之间的任何空格(线索字段除外。线索中的空格需要保留)。我真的不知道该怎么做。我有一些基本的想法,但我不知道如何去实现它们,或者它们是否可行(编码新手而且很无能)。到目前为止,我尝试过的所有内容要么无法编译,要么无法正常工作。

我最近尝试拉出第一个字段:

for (i=0; i<MAX_LENGTH; i++) {
   for (j=0; j<MAX_INPUT; j++) {
      if (isSpace(&input[i][j]) == FALSE) {
      //if whitespace is not present, find the location of the next
      //space and copy the string up til there
         static int n = j;

         for (n=0; n<MAX_INPUT; n++) {
            if (isSpace(&input[i][n]) == TRUE) {
               strncpy(word[i],&input[i][j],(n-j));
               //printf("Word[%d]: %s\n",i,word[i]);
               break;
            }
         }

      }
   }
}

它不起作用并不奇怪。我还没有完全解决这个问题。请帮忙?

最佳答案

您当前的代码似乎太复杂了。下面是一个三步算法,如果我将其编码,我将实现该算法:

  1. 当当前字符为空格时:移动到下一个字符;
  2. 当当前字符不是空格时:将其追加到输出中并移至下一个字符;
  3. 重复步骤 1 和 2,直到到达输入字符串的末尾。

关于c - 在 C 中分隔可以有任意空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10780899/

相关文章:

在 C 中将 char * 转换为 char * []

c - 如何处理 C 程序(非 C++)中的运行时内存分配错误指针错误?

Android 文件名中带空格打不开

c++ - 多类编译错误

c - 为什么我的线程不在程序完成之前将其结果存储在数组中?

whitespace - 行内 block 元素之间的空白

ruby - 为什么 RegExp.escape 在我的 Ruby 表达式中不起作用?

我可以使用 malloc 模拟 strcpy 吗?

c - 使用指针的字符串

c++ - 为什么将内存分配给 char 指针不会截断 char 序列