2016-11-25 6 views
-1

なし整数からポインタになりますので、ここでのコードです:私はここで何をしようとしているは「FUNCTION_NAME」の引数1を渡すと、キャスト

#include <stdio.h> 
#include <stdlib.h> 

void draw(int length, char brush); 
int stringLength(char name[]); 
void drawName(char nameLetter[], char brush); 

int length; 
char brush, name; 
char *a = "Anne", *b = "Bart", *c = "Celine", *d = "Darius"; 

int main(void) { 
    printf("Write down the length of line.\n"); 
    scanf("%d", &length); 
    printf("Give first letter of the name (a, b, c albo d)\n"); 
    scanf(" %c", &name); 
    printf("Pick character to be used as brush.\n"); 
    scanf(" %c", &brush); 
    drawName(name, brush); 
    return 0; 
} 

void draw(int length, char brush) { 
    int i; 
    for (i = 0; i < length; i++) { 
    printf("%c", brush); 
    } 
} 

int stringLength(char name[]) { 
    int i; 
    while (name[i] != '\0') { 
    i++; 
    } 
    return i; 
} 

void drawName(char nameLetter[], char brush) { 
    draw(stringLength(nameLetter), brush); 
    printf("%s\n", nameLetter); 
    draw(stringLength(nameLetter), brush); 
} 

、文字列の長さを取得し、この値を使用することです文字があるので、行内に多くの文字を印刷する責任を負う別の関数のパラメータです。しかし、私は19行目でエラーが発生します。( 'drawName'の引き数1を渡すと、キャストなしの整数からポインタが作成されます)。私はstackoverflow上のここにあるすべての質問をここで読みましたが、 。私はあなたの助けにたくさん感謝します!私はここで死んで終わりだあなたはタイプcharの引数でそれを呼び出している間に...

+0

'drawName'は' char * 'をパラメータとして( 'char []'から)崩壊します。あなたのコードは明らかに単一の 'char'パラメータを渡しています。これについて何が分からないのですか? –

+1

'stringLength()'で 'i'を初期化できません。 –

答えて

2

機能

void drawName(char nameLetter[], char brush); 

がタイプchar *

の最初のパラメータで宣言されています。

char brush, name; 
^^^^^^^^^^^^^^^^ 
//...    
drawName(name, brush); 
+0

charnameをchar * nameに変更するたびにエラーが発生します。(形式 '%c'は 'char *'型の引数を受け取りますが、引数2は 'char **'型です) –

+1

@angrysomoan文字列を文字配列として宣言し、少なくとも%sの書式指定子を使用するか、scanfの標準関数fgetsinsteadを使用する必要があります。 –

+0

私は文字を取得しようとし、それを使用して文字列名を指すようにします(たとえば、get char aを関数のパラメータとして使用して、aという名前の文字列変数を指すようにします)。どうやってするか? –

関連する問題