strcpy的替代品?还是在程序中修复strcpy?

strcpy的替代品?还是在程序中修复strcpy?,c,string,stdio,strcpy,strncpy,C,String,Stdio,Strcpy,Strncpy,我想不出这个程序出了什么问题。我试过使用 strncpy(text,array[ ],sizeof(text)) 但这并没有解决任何问题。我需要的是一个简单的复制字符串的方法,就像在pascal语言中一样,其中可以使用简单的等号来复制字符串(或者可以执行此操作的生成函数)。这是源代码: #include <stdio.h> #include <string.h> int x,y; char array[10][10];

我想不出这个程序出了什么问题。我试过使用

                      strncpy(text,array[ ],sizeof(text)) 
但这并没有解决任何问题。我需要的是一个简单的复制字符串的方法,就像在pascal语言中一样,其中可以使用简单的等号来复制字符串(或者可以执行此操作的生成函数)。这是源代码:

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

int x,y;

char array[10][10];
int choice;
char text[5];


int main()
 {
    for(x=0;x<5;x++)
     {
        printf("ENTER text: ");
        scanf("%s", text);   
        strcpy (text,array[x]);
     }

     for (y=0;y<5;y++)
      {
        printf("\n");
        printf("%s", array[y]);
      }
    return 0;
 }
但我只得到五个空格,没有字符串。有什么解决办法吗?

这句话

strcpy (text,array[x]);
这是无效的。我想你是说

strcpy( array[x], text );
考虑到你应该写作

scanf("%4s", text); 
       ^^^^
你应该试试这个,而不是这个-

strcpy (array[x],text);

strcpy
的第一个参数是目标,第二个参数是源。

您以错误的顺序将参数传递给
strcpy

见:

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


dest表示目的地,src表示源。

strcpy(文本,数组[x])-->
strcpy(数组[x],文本)
这是strcpy(目的地、源)
,你是在向后做,所以你是在把一个空数组复制到
文本中
好吧,这是一个简单的错误,谢谢,但真正的问题是strcpy有没有替代品?“真正的问题是strcpy有没有替代品”这不是一个X-Y问题吗?真正的问题是您没有正确使用strcpy。为什么要重新发明工作得非常好的库函数(一旦你知道了怎么做)?我很好奇为什么有人认为
“*string*”
将适合
字符文本[5]当使用
scanf(“%s”,文本)时?好的,谢谢你的修复,但是你知道strcpy的替代品吗?@Questionare232不,我不知道。当然,您可以使用诸如strncpy或memcpy之类的字符串函数,但它们在使用的逻辑上与strcpy不同。在C中,数组没有赋值运算符。您必须逐元素复制数组。@问题232您可以将数组括在结构中,在这种情况下,您可以将结构中的一个对象指定给另一个对象,实际上是指定封闭的数组。
strcpy (text,array[x]);       
strcpy (array[x],text);