我是 C 新手。我试图从用户那里获取大量文本并计算单词、字符、行、空格和字母的数量。这就是我所做的:
#include <ctype.h>
#include <stdio.h>
int main(void)
{
char c = getchar();
char previousc;
int charcount = 0;
int wordcount = 0;
int whitespacecount = 0;
int linecount = 0;
int lettercount = 0;
while(c != EOF)
{
if(isLetter(c) == 1) lettercount++;
if(isWhitespace(c) == 1)
{
whitespacecount++;
if(isWhitespace(previousc) == 0) wordcount++;
}
if(c == "\n") linecount++;
previousc = c;
c = getchar();
charcount++;
}
printf("Character Count: %d\n Word Count: %d\n Whitespace Count: %d\n Letter Count: %d\n Line Count: %d\n", charcount, wordcount, whitespacecount, linecount, lettercount);
}
int isLetter(char c) // 1 for true, 0 for false.
{
// instead of writing tons of if's
if(isalpha(c) > 0)
return 1;
return 0;
}
int isWhitespace(char c) // 1 for true, 0 for false.
{
if(c == "\n" || c == " " || c == " ") return 1;
return 0;
}
但我收到了很多错误和警告,我迷失了......
program2.c: In function ‘main’:
program2.c:20: warning: comparison between pointer and integer
program2.c: At top level:
program2.c:28: error: conflicting types for ‘isLetter’
program2.c:28: note: an argument type that has a default promotion can’t match an empty parameter name list declaration
program2.c:14: error: previous implicit declaration of ‘isLetter’ was here
program2.c:35: error: conflicting types for ‘isWhitespace’
program2.c:35: note: an argument type that has a default promotion can’t match an empty parameter name list declaration
program2.c:15: error: previous implicit declaration of ‘isWhitespace’ was here
program2.c: In function ‘isWhitespace’:
program2.c:36: warning: comparison between pointer and integer
program2.c:36: warning: comparison between pointer and integer
program2.c:36: warning: comparison between pointer and integer
我用谷歌搜索了不同的错误,但没有找到解决我的问题的解决方案。
你能帮我一下吗?
Thanks.
For
program2.c:20:警告:指针和整数之间的比较
Change
if(c == "\n")
to
if(c == '\n')
For
program2.c:28:错误:“isLetter”的类型冲突
program2.c:28:注意:具有默认提升的参数类型不能与空参数名称列表声明匹配
program2.c:14: 错误:之前的隐式声明‘isLetter’在这里
program2.c:35:错误:“isWhitespace”的类型冲突
program2.c:35:注意:具有默认提升的参数类型不能与空参数名称列表声明匹配
program2.c:15: 错误:之前的隐式声明‘isWhitespace’在这里
为您的函数定义原型。
int isLetter(char c);
int isWhitespace(char c);
For
program2.c:在函数“isWhitespace”中:
program2.c:36:警告:指针和整数之间的比较
program2.c:36:警告:指针和整数之间的比较
program2.c:36:警告:指针和整数之间的比较
Change
if(c == "\n" || c == " " || c == " ") return 1;
to
if(c == '\n' || c == ' ' || c == '\t')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)