Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从'char';改为“char*'”;_C - Fatal编程技术网

从'char';改为“char*'”;

从'char';改为“char*'”;,c,C,代码是: 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(TX

代码是:

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;
}
intmain(){
int i,最后;
char-TXT[500];
printf(“Donnez un example?\n”);
获取(TXT);
last=strlen(TXT);

for(i=0;i
TXT
是一个500个字符的数组

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

函数
strcpy
希望您为这两个参数传递指向字符的指针(键入
char*

相反,你只传递了一个字符

你能解释一下这个节目的目的吗?

也许我们可以帮你解决它。

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

至于如何修复它,这取决于您的代码试图做什么

TXT[1] = TXT[0];

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

看起来你想写

TXT[i-1] = TXT[i];
(这将从字符串中删除前导字符)


字符串函数在字符串上工作,而不是在字符上工作


您是否正在尝试交换单词或字符?

问题在于您没有考虑代码的功能,只是盲目地将代码输入文本编辑器,并期望奇迹出现。“问题的原因是什么?”让我猜猜看。缺乏经验?你不理解答案,但他们回答了你提出的问题。如果你想帮助解决问题,那么你需要定义问题。就目前情况而言,你只是要求解释编译器错误。不需要大喊大叫。很好,但我想使用strcpy?如何???我不明白你的意思?Pos在我们理解正确的代码之前,这是可能的?您想解决什么问题?16 C:\Users\ELIAS\Desktop\INFORMATIQUE TP\iza7a.cpp从
char'到
char*的转换无效您为什么要编写此程序?它毫无意义,似乎没有任何用处!
for(i=1 /* one, not zero */ ; i<50 ; i++) {
    TXT[i-1] = TXT[i];
}
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