2011-04-05 95 views
1

我得到印错字母,当我运行这样的功能:在功能设置指针

#include <stdio.h> 

void getletters(char *one, char *two) { 
    scanf("%c %c",&one, &two); 

    /* if i print one and two here, they are correct). */ 
} 

int main(void) { 
    char one, two; 
    getinput(&one, &two); 
    char *pone = &one; 
    char *ptwo = &two; 
    printf("your letters are %c and %c", *pone, *ptwo); /* These are coming out as the wrong characters */ 
} 

我有不正确的语法?我是否正确使用指针?

+0

仅供参考这里没有任何东西被“返回”。你的意思是“打印”我怀疑。 – 2011-04-05 15:52:34

+0

'getletters' /'getinput'是否与拼写错配? – Jon 2011-04-05 15:53:29

+0

什么是getinput? – 2011-04-05 15:54:24

回答

1
void getletters(char *one, char *two) { 
    scanf("%c %c",&one, &two"); 
} 

您接受指针到字符,然后使用&接线员给指针到指针到字符,然后将其提供给一个函数期待指针到字符。

你也有一个错字。

你应该写:

void getletters(char *one, char *two) { 
    scanf("%c %c",one, two); 
} 
1

在您的scanf函数中,您不需要获取变量的地址。尝试:

void getletters(char *one, char *two) { 
    scanf("%c %c", one, two); // one and two are already pointers... 
} 
0

试试这个

void getletters(char *one, char *two) { 
    scanf("%c %c",one, two); 

    /* if i pint one and two here, they are correct). */ 
} 

一个和两个已经指针在getLetters所以没有必要通过他们的地址SCANF

此外,在主,你正在尝试将指针传递给printf函数,这是错误的,你必须通过值传递参数:

printf("your letters are %c and %c", *pone, *ptwo); 
+0

不只是“不需要”;这样做是错误的。 – 2011-04-05 15:55:10

+0

@Tomalak确实 – greydet 2011-04-05 15:56:23

0

试试这个。

#include <stdio.h> 
void getletters(char *one, char *two) { 
    scanf("%c %c",one, two); 
} 

int main (int argc, char const* argv[]) 
{ 
    char one, two; 
    getletters(&one, &two); 
    printf("your letters are %c and %c\n",one, two); /* These are coming out as the wrong characters */ 
    return 0; 
} 
0
scanf("%c %c",&one, &two"); 

什么类型的说法确实在转换说明%c期待?将其与&one&two的类型进行比较。