2016-11-20 66 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){...} –

相關問題