【问题标题】:Alternative to strcpy? or fix to strcpy in program? [closed]替代strcpy?或修复程序中的strcpy? [关闭]
【发布时间】:2016-05-14 05:59:07
【问题描述】:

我不知道这个程序有什么问题。我试过使用

                      strncpy(text,array[ ],sizeof(text)) 

已经解决了,但这并没有解决任何问题。我需要的是一种简单的复制字符串的方法,就像在帕斯卡语言中一样,可以使用简单的等号来复制字符串(或可以执行此操作的生成函数)。这是源代码:

#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;
 }

输出应该是这样的;

"*string*"
"*string*"
"*string*"
"*string*"
"*string*"

但我得到的只是五个空格,没有字符串。有什么解决办法吗?

【问题讨论】:

  • strcpy (text,array[x]); --> strcpy (array[x], text);
  • 它是strcpy(destination, source),你是倒着做的,所以你将一个空数组复制到text
  • 好的,简单的错误,谢谢,但真正的问题是 strcpy 有什么替代品吗?
  • “真正的问题是 strcpy 的替代品” 这不是 X-Y 问题吗?真正的问题是您没有正确使用strcpy。为什么要重新发明运行良好的库函数(一旦你知道如何)?
  • 我很好奇为什么有人认为"*string*" 在使用scanf("%s", text); 时会适合char text[5];

标签: c string stdio strcpy strncpy


【解决方案1】:

此声明

strcpy (text,array[x]);

无效。我想你的意思是

strcpy( array[x], text );

考虑到你应该写

scanf("%4s", text); 
       ^^^^

【讨论】:

  • 好的,感谢您的修复,但您知道 strcpy 的任何替代方法吗?
  • @Questionare232 不,我不知道。当然,您可以使用 strncpy 或 memcpy 等字符串函数,但它们在使用的逻辑上与 strcpy 不同。在 C 数组中没有赋值运算符。您必须逐个元素地复制数组。
  • @Questionare232 您可以将数组包含在结构中,在这种情况下,您可以将结构的一个对象分配给另一个对象,实际上是分配包含的数组。
【解决方案2】:
strcpy (text,array[x]);       

你应该试试这个,而不是这个-

strcpy (array[x],text);

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

【讨论】:

    【解决方案3】:

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

    http://linux.die.net/man/3/strcpy:

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      相关资源
      最近更新 更多