c - 如何从文件中获取字符串并存储在二维字符数组中,并将该二维字符数组与 C 中的字符串进行比较?

标签 c arrays string gcc multidimensional-array

我有一个文本文件,它的值(我通常称它们为 upc_values)为

01080006210
69685932764
40000114485
40000114724
07410855329
72908100004
66484101000
04000049163
43701256600
99999909001
07726009493
78732510053
78732510063
78732510073
78732510093
02842010109
02842010132
78732510213
02410011035
73999911110


 char *UPC_val = "99999909001";
 char upcbuf[100][12];
 char buf[12];

 memset(buf,0,sizeof(buf));
 memset(upcbuf,0,sizeof(upcbuf));

当我尝试 fgets 时,我将其存储在 2D 缓冲区中。

 while ( fgets(buf, sizeof(buf), f) != NULL ) {
        strncpy(upcbuf[i], buf, 11);
        i++;
 }

我尝试打印缓冲区中的数据。

 puts(upcbuf[0]);

upcbuf[0] 在连续流中有整个数据,

0108000621069685932764400001144854000011472407410855329729081000046648410100004000049163437012566009999990900107726009493787325100537873251006378732510073787325100930284201010902842010132787325102130241001103573999911110

我想将此 upc 值(11 位)与另一个字符串(11 位)进行比较。我用过,

 if(strncmp(UPC_Val,upcbuf[i],11) == 0)
 {
      //do stuff here
 }

它没有正常工作,我太喜欢用strstr()了,

 if(strstr(upcbuf[0],UPC_val) != NULL)
 {
     //do stuff here
 }

我完全不知道它在做什么,我是否正确地进行了比较? 怎么办,请帮忙?

提前致谢。

最佳答案

要将一行 11 位数字和一个 '\n' 读入一个 string 需要一个至少包含 13 位的数组来存储 string。没有理由如此紧张。建议 2x 预期的最大尺寸

char upcbuf[100][12];  // large enough for 100 * (11 digits and a \0)
...
#define BUF_SIZE (13*2)
char buf[BUF_SIZE];
while (i < 100 && fgets(buf, sizeof buf, f) != NULL ) {

去掉潜在的尾部 '\n'

  size_t len = strlen(buf);
  if (len && buf[len-1] == '\n') buf[--len] = '\0';

检查长度并以某种方式处理它。

  if (len != 11) exit(EXIT_FAILURE);

保存/打印数据

    // strncpy(upcbuf[i], buf, 11);  // fails to insure a null character at the end
    strcpy(upcbuf[i], buf);
    i++;
    puts(upcbuf[i]);

比较字符串

    if(strcmp(UPC_Val,upcbuf[i]) == 0) { 
      // strings match
    }

关于c - 如何从文件中获取字符串并存储在二维字符数组中,并将该二维字符数组与 C 中的字符串进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45889540/

相关文章:

python - 使用 nditer 进行 Numpy 数组比较

arrays - 在 Lua 中对数组中的数组进行排序

swift - Swift 字符串中区分大小写的字符替换

c# - 找到一组单词并用一个单词替换它们

java - 循环内的变量

c - pow 函数给出不需要的结果 c

c 打印数组长度

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

C++ 返回指针仅给出数组的第一个元素

c - 转换有符号的 int 与 short 时符号扩展的不一致