2016-06-06 6 views
-2

작업은 파일에서 텍스트를 읽고 키보드에서 구분 기호 배열을 읽는 것입니다. 프로그램에서 텍스트의 구분 기호 시퀀스를 검색해야하며, 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); 
} 

정말 해달라고 내 프로그램은 짝수 및 홀수 문자열을 구분하기 위해 행과 방법으로 텍스트를으로 나눔하는 방법을 알고있다. 정말 혼란 스러워요

+2

먼저 코드 *를 올바르게 구분하십시오 ... –

답변

0

strtok_s의 정의는 다음과 같다 :

문자 * strtok_s (문자 * strToken, const를 문자 * strDelimit, 문자 ** 컨텍스트);

매개 변수가 혼합되어 있습니다. 첫 번째 매개 변수는 입력 문자열에 대한 포인터 여야하며 두 번째 매개 변수는 구분 기호 문자열이어야합니다. 마지막으로 함수가 실행 된 후 세 번째 매개 변수에는 구분 기호가있는 위치 다음의 문자열에 대한 포인터가 전달되거나 구분 기호가없는 경우 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하지 /n 또는 n이다.

+0

고마워^^ –

관련 문제