使用文本和分隔符进行操作

时间:2016-06-06 13:02:00

标签: c text

任务是:从文件中读取文本并从键盘读取分隔符数组。比程序应该搜索文本中的分隔符序列,如果它被找到3次或更多,则将所有奇数字符串交换成一个圆圈。此外,它应该检测用户输入的超出长度限制的所有单词,但仅限于奇数字符串。 这就是我现在所拥有的:

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>

int main(void)
{
    setlocale(LC_ALL, "Russian"); //entering the text
    const int numberOfCharactersToRead = 128;
    char* inputText = (char*)(malloc(sizeof(char) * numberOfCharactersToRead));
    FILE *fp;
    fopen_s(&fp, "D:\texxxt.txt", "r");
    if (fp == NULL)
    {
        printf("nFile not foundn");
        system("pause");
        return 0;
    }
    fgets(inputText, numberOfCharactersToRead, fp);
    printf("Enter the sequence of delimiters: "); //entering delimiters
    const int numberOfDelimitersToRead = 6;
    char* delimiters = (char*)(malloc(sizeof(char) * numberOfDelimitersToRead));
    int indexer = 0;
    for (indexer = 0; indexer < numberOfDelimitersToRead; indexer++)
    {
        delimiters[indexer] = getchar();
    }
    //Trying to use strtok in order to devide text into rows (unsuccesful)
    char delims[] = "/n";
    char *pch = strtok_s(NULL, inputText, &delims);
    printf("nLexems:");
    while (pch != NULL)
    {
        printf("n%s", pch);
        pch = strtok_s(NULL, inputText, &delims);
    }
    return 0;
}

int symcount(void) 
{ //function searching the quantity of delimiters
    char str[20], ch;
    int count = 0, i;
    printf("nEnter a string : ");
    scanf_s("%s", &str);
    printf("nEnter the character to be searched : ");
    scanf_s("%c", &ch);
    for (i = 0; str[i] != ''; i++) 
    {
        if (str[i] == ch)
            count++;
    }
    if (count == 0)
        printf("nCharacter '%c'is not present", ch);
    else
        printf("nOccurence of character '%c' : %d", ch, count);
    return (0);
}

我真的不知道如何将文本分成行,以及如何使我的程序区分偶数和奇数字符串。我真的很困惑

1 个答案:

答案 0 :(得分:0)

strtok_s的定义如下:

  

char * strtok_s(char * strToken,const char * strDelimit,char ** context);

您正在混合参数。第一个参数应该是指向输入字符串的指针,第二个参数应该是分隔符字符串。最后,在执行函数之后,第3个参数将在找到分隔符的位置之后传递指向字符串的指针,如果没有找到分隔符,则传递NULL。然后可以将此指针传递到下一个strtok_s调用以继续搜索。

char *pchNext;
char *pch = strtok_s(inputText, delimiters, &pchNext);

while (pch != NULL)
{
    printf("\n%s", pch);
    pch = strtok_s(NULL, delimiters, &pchNext); // The first parameter can be NULL here
}

此外,换行符的文字表示为\n,而不是/nn