如何在C unix中使用空格分隔符拆分字符串?

时间:2017-07-29 12:10:54

标签: c unix

我是C编程新手,我的培训使用Redhat,Unix和我已经花了一天时间寻找解决方案。我知道在C中操作字符串对我来说很难初学。

如何将字符串拆分为单个单词,以便循环使用它们?或者将字符串转换为char数组以便能够访问单个元素。

char myString [] ="快速的棕色狐狸&#34 ;;

确切地说,我想将所述字符串的每个单词打印到一个固定列中,每当字符串到达​​该列数时,它将转到新行并打印序列而不分割该单词。

例如。只在12列内打印出来,只需要分开单词:

the quick 
brown fox

而不是:

the quick br
own fox

.. TIA

1 个答案:

答案 0 :(得分:1)

您的问题可分为两部分,A部分需要将句子拆分为单词,部分B需要每行打印最多x个字符。

A部分 - 拆分字符串

查看strok功能。您可以使用空格作为分隔符。

#include <stdio.h>
#include <string.h>
// You need this line if you use Visual Studio
#pragma warning(disable : 4996)

int main()
{
    char myString[] = "the quick brown fox";
    char* newString;
    newString= strtok(myString, " ,.-");
    while (newString!= NULL)
    {
        printf("%s\n", newString);
        newString= strtok(NULL, " ,.-");
    }

    return 0;
}

输出:

the
quick
brown
fox

B部分

现在,您希望在到达示例中的最大列12时打印单词并插入换行符。 您需要检查每个提取的单词的长度,您可以使用strlen。 当字符串很长时,你插入一个换行符......

希望它有所帮助,如果有什么不清楚的话留下评论。