【问题标题】:Comparison of 2D array and character array C二维数组和字符数组C的比较
【发布时间】:2018-02-10 16:28:07
【问题描述】:

我将从文件中读取的二维数组中存储的数据与其中包含数据的字符数组进行比较。它看起来像这样:

char file[10][20];
file[0] = "test";
char arry[20] = "test";
if (arry == file[0]) {
    //do something
}
else {
    // do something else
}

问题是 //do something 语句没有被执行,我确保在将文件读入数组时没有留下任何换行符。感谢您的帮助

【问题讨论】:

标签: c arrays string comparison


【解决方案1】:

不要被file[0] = "test";char arry[20]="test"; 的相似语法误导

首先将指向字符串文字的衰减指针分配给 char[20] 对象,这是类型不匹配错误。

其次是用字符串字面量初始化内容的 char 数组的声明。这与上面显示的不同。

您可以快速发送strcpy(file[0],"text"),这会起作用。但是再用strcmp和朋友们来比较这两个字符串。

if(strcmp(file[0],arry) == 0){
   ...
}

【讨论】:

  • strcmp在data中遇到0可能有问题,用memcmp比较好?
  • @HowChen.:这就是为什么我们使用strcmp来比较字符串,这里memcmp有什么用?我们特别想比较字符,直到我们遇到\0...比较\0 之外的内容并不重要。
  • 好的,我想也许数据文件可能包含0,例如我总是从二进制文件中做类似的事情并与一些模式进行比较
  • @HowChen.:那是不同的背景。在你的情况下,目的不是比较字符串而是比较二进制文件的内容等等......
猜你喜欢
  • 1970-01-01
  • 2021-07-22
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
相关资源
最近更新 更多