C I';我对字符串使用指针有问题
最后一个函数在第20行出现2次,在第21行出现2次。您需要调用C I';我对字符串使用指针有问题,c,string,function,pointers,C,String,Function,Pointers,最后一个函数在第20行出现2次,在第21行出现2次。您需要调用slova()函数,而不仅仅是声明它,并对结果执行一些操作,例如打印结果 参数应该是char*a,而不是char a,因此它是指向字符串的指针,而不是单个字符 您应该使用函数isupper()和islower(),而不是自己检查字符范围 不需要检查(x==0&&y==0);如果它们都是0,那么x==y将为真。您还可以使用一系列的else if,然后在末尾使用else 你有一个额外的是一个函数声明,而不是函数调用。char a声明一个字
slova()
函数,而不仅仅是声明它,并对结果执行一些操作,例如打印结果
参数应该是char*a
,而不是char a
,因此它是指向字符串的指针,而不是单个字符
您应该使用函数isupper()
和islower()
,而不是自己检查字符范围
不需要检查(x==0&&y==0)
;如果它们都是0
,那么x==y
将为真。您还可以使用一系列的else if
,然后在末尾使用else
你有一个额外的
在for(i=0;i)的末尾,code>是一个函数声明,而不是函数调用。char a
声明一个字符,而不是一个字符串指针。您不会对函数的返回值做任何操作。char slova(a);
声明一个字符,这是第一个错误的来源。您包括
但不使用它;不包括它。您包括
但不使用它;使用isupper()
和islower()
。您的函数slova()
并不总是返回一个值-如果使用该值,这是不好的。无论我输入什么,它总是打印出0。您在for
行的末尾有一个额外的;
,因此循环是空的。所有修复程序都没有注意到额外的值;非常感谢您总是启用完整的警告。我的编译器警告“for loop有空的正文”我怎样才能做到这一点?
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#include<math.h>
char slova(char a);
int main()
{
char a[100];
fgets(a,sizeof(a),stdin);
char slova(a);
return 0;
}
char slova(char a)
{
int i,x=0,y=0,n;
n=strlen(a);
for(i=0;i<n;i++);
{
if(*(a+i)>='A' && *(a+i)<='Z') x++;
if(*(a+i)>='a' && *(a+i)<='z') y++;
}
if(y>x) return -1;
if(y<x) return 1;
if(x==y || (x==0 && y==0)) return 0;
}
11 14 C:\Users\x\Documents\asgsgg.cpp [Error] invalid conversion from 'char*' to 'char' [-fpermissive]
17 12 C:\Users\x\Documents\asgsgg.cpp [Error] invalid conversion from 'char' to 'const char*' [-fpermissive]
20 11 C:\Users\x\Documents\asgsgg.cpp [Error] invalid type argument of unary '*' (have 'int')
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int slova(char *a);
int main(void)
{
char a[100];
fgets(a,sizeof(a),stdin);
printf("Result: %d\n", slova(a));
return 0;
}
int slova(char *a)
{
int i,x=0,y=0,n;
n=strlen(a);
for(i=0;i<n;i++)
{
if(isupper(*(a+i))) x++;
if(islower(*(a+i))) y++;
}
if(y>x) return -1;
else if(y<x) return 1;
else return 0;
}