2016-11-20 72 views
-1

我的程序应该转换小写字母以外的所有字符,除了字母开头的字符。例如,bla bla bla应该成为bla bla。我有这个错误:'char'类型的参数与char类型的参数不兼容*

#include <stdio.h> 
#include <ctype.h> 
#include <string.h> 

#define TRUE -1 
#define FALSE 0 
void incaps1(char*s) 
{int i; 
int PreviousCharWasSpace; 

    for(i=0,PreviousCharWasSpace=TRUE ; i!=sizeof(*s) ; i++) 
    { if (*(s+i)==' ') 
      PreviousCharWasSpace=TRUE; 
     else{ 
      if (PreviousCharWasSpace) 
      { *(s+i)=toupper(*(s+i)); 
       PreviousCharWasSpace=FALSE; 
      } 
     } 
    } 
    printf("%s\n",*s); 
} 



int main(){ 
    char phrase[256]; 
    while(gets(phrase)){ 
     char*s=phrase; 
     incaps1(*s); 
     } 

我在incpas1(S),其强调 '',说的错误 “错误:类型 '字符' 的说法是char *类型的参数不符” }

+3

请用几句话解释你的程序应该怎么做,如果可能的话您的输入和预期输出的示例。这样,在关注错误之前,没有人需要通读您的代码并尝试理解它应该做什么。 –

+0

我的程序应该将所有字符转换成小写字母,除了字母开头的字符。例如,bla bla bla应该成为bla bla。 –

回答

1

我觉得你的意思是

incaps1(s); 
     ^^^^ 

要考虑到这个循环是错误的

for(i=0,PreviousCharWasSpace=TRUE ; i!=sizeof(*s) ; i++) 
            ^^^^^^^^^^^^ 

似乎必须有至少

for(i=0,PreviousCharWasSpace=TRUE ; i!=strlen(s) ; i++) 
            ^^^^^^^^^^^^ 

这里也是一个错误

printf("%s\n",*s); 

写,而不是

printf("%s\n", s); 
       ^^^ 
+0

如果我使用incaps1(s);那么我会有错误。 Coursework.exe中的0x5456ED6C(msvcr110d.dll)未处理的异常:0xC0000005:访问冲突读取位置0x00000042。 –

+0

@AlexandrosTsos我在代码中看不到这样的函数名称。也许你的项目有其他文件。 –

+0

它有下面的定义void incaps1(char * s){...} –

相关问题