我无法弄清楚strcpy

时间:2015-01-21 20:04:21

标签: c strcpy

这是一个未完成的代码,用于将字母数字字符转换为摩尔斯电码。到目前为止,只有字符“A”在集合中。我似乎无法将摩尔代码字符串“a”复制到变量“c”中。编译器告诉我,传递strcpy的参数1使得指针来自整数而没有强制转换。

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

int main(){
    char c; /* variable to hold character input by user */
    char sentence[ 80 ]; /* create char array */
    int i = 0; /* initialize counter i */
    const char *a = ".- ";

    /* prompt user to enter line of text */
    puts( "Enter a line of text:" );

    /* use getchar to read each character */
    while ( ( c = getchar() ) != '\n') {
        c = toupper(c);
        switch (c){
            case 'A':
                strcpy(c, a);
                break
            }
        sentence[ i++ ] = c;
    } /* end while */

    sentence[ i ] = '\0'; /* terminate string */

    /* use puts to display sentence */
    puts( "\nThe line entered was:" );
    puts( sentence );
    return 0;
}

2 个答案:

答案 0 :(得分:0)

c是单个字符,而a是一个字符串(这解释了为什么c只能容纳一个字符,以及编译器抱怨的原因)。如果您希望c包含整个字符串,请将其声明为(就像您对sentence所做的那样)。

答案 1 :(得分:0)

您已将变量c声明为类型char

char c;

然后您尝试使用strcpy(c,a) - 但strcpy对第一个参数的期望是什么类型?这是来自联机帮助页面的签名:

char *strcpy(char *dest, const char *src);