任务是:从文件中读取文本并从键盘读取分隔符数组。比程序应该搜索文本中的分隔符序列,如果它被找到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);
}
我真的不知道如何将文本分成行,以及如何使我的程序区分偶数和奇数字符串。我真的很困惑
答案 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
,而不是/n
或n
。