【问题标题】:invalid conversion from `char' to `char*' [closed]从“char”到“char*”的无效转换[关闭]
【发布时间】:2014-01-01 16:59:16
【问题描述】:

代码是:

int main() {

    int i,last;
    char TXT[500];

    printf("Donnez un exemple ?\n");
    gets(TXT);
    last = strlen(TXT);

    for(i=0;i<50;i++){
        if (i==0){
            strcpy(TXT[1],TXT[0]);
        } else {
            strcpy(TXT[i-1],TXT[i]);
        }
    }

    getch();                        
    return 0;
}

行错误:strcpy(TXT[1],TXT[0]);

问题的原因是什么?

【问题讨论】:

  • 问题是你没有考虑你的代码做了什么,你只是盲目地将代码敲入文本编辑器并期待奇迹出现。
  • "问题的原因是什么?"让我猜猜。缺乏经验?
  • 您不理解答案,但他们回答了您提出的问题。如果您需要帮助解决您的问题,那么您需要定义问题。就目前而言,您只是要求解释编译器错误。

标签: c


【解决方案1】:

strcpy 函数需要两个char*(技术上是一个char* 和一个const char*)。此外,不允许传递strcpy重叠缓冲区。

看起来你想写

TXT[i-1] = TXT[i];

(这会从字符串中删除前导字符)。

for(i=1 /* one, not zero */ ; i<50 ; i++) {
    TXT[i-1] = TXT[i];
}

很好,但我想使用strcpy。怎么样?

您不能在没有中间缓冲区的情况下使用strcpy。如果您必须使用strcpy,请这样做:

char TXT[500], TMP[500];
printf("Donnez un exemple ?\n");
fgets(TXT, 499, stdin);
strcpy(TMP, &TXT[1]); // Note that 'for' loop is no longer required

【讨论】:

  • 很好,但我想使用 strcpy ?怎么样???
【解决方案2】:

TXT 是一个 500 个字符的数组。

所以,TXT[1]TXT[0] 是单独的字符(只有一个字母)。
TXT[0] 是数组中的第一个字符。
TXT[1] 是数组中的第二个字符.

函数strcpy 要求您为两个参数传递指向字符(类型char*)。
相反,您传递的是单个字符。

你能解释一下这个程序的目的是什么吗?
也许我们可以帮你解决它。

【讨论】:

  • 我没明白你的意思?在我们理解正确的代码之前可能吗?
  • 你想解决什么问题?
  • 16 C:\Users\ELIAS\Desktop\INFORMATIQUE TP\iza7a.cpp 来自char' to char*'的无效转换'
  • 你为什么要写这个程序?这毫无意义,而且似乎没有做任何有用的事情!
【解决方案3】:

TXT[i] 的类型为 char。但是strcpy 需要char* 类型的参数,因为它对以空字符结尾的字符串进行操作。因此编译错误。

至于如何修复它,这取决于您的代码试图做什么。也许你想做的只是

TXT[1] = TXT[0];

【讨论】:

    【解决方案4】:

    字符串函数作用于字符串而不是字符

    你想交换单词或字符吗?

    【讨论】:

    • 不用喊了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多