【发布时间】:2021-12-04 22:11:30
【问题描述】:
我想计算字符串中有多少这个词和运算符,但我尝试使用strchr,但它不起作用。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
int x,count =0;
char buff[100]="1+2.3(7^8)sin cos + cos sin_e-2x+x2*2!/_x1 sine";
//gets(buff);
strupr(buff);
for (int i = 0; buff[i] != '\0'; i++)
{
if (buff[i] == '+' || buff[i] == '-' || buff[i] == '*' ||
buff[i] == '/' || buff[i] == '^'|| buff[i] == '(')
{
count++;
}
}
char *op2;
int check=0;
char cpysin[100],cpycos[100];
strcpy(cpysin,buff);
strcpy(cpycos,buff);
do
{
if(strchr(cpysin,'SIN')!=0)
{
count++;
strcpy(cpysin,strstr(cpysin,"SIN"));
cpysin[0] = ' ';
cpysin[1] = ' ';
cpysin[2] = ' ';
}
else
{
break;
}
}
while(check==0);
do
{
if(strchr(cpycos,'COS')!=0)
{
count++;
strcpy(cpycos,strstr(cpycos,"COS"));
cpycos[0] = ' ';
cpycos[1] = ' ';
cpycos[2] = ' ';
}
else
{
break;
}
}
while(check==0);
printf("FINAL \n%d",count);
}
我只有在循环中执行此操作时才工作,同时试图找出其中有多少罪过,但当我将 cos 函数放在它上面时它不起作用。请告诉我如何解决这个问题,如果我需要编写更多函数来查找。
【问题讨论】:
-
始终,始终首先阅读文档:man strchr
-
顺便说一句。您用
strstr标记了您的问题,但您没有使用它,而是使用了“完全”不同的东西。
标签: arrays c string loops strstr