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);