c - 在 C 中设置结构数组

标签 c arrays parsing struct command-line-arguments

我正在编写一个简单的结构数组程序。给出了一个字符串,我想解析它。一个字符串由几个字符组成。

例如,字符串“a:bc:D:E”有 5 个不同的字符。冒号“:”表示该字符具有值。

结构数组大小为 256 ((option[256])),其中包括所有 ASCII 字符。

我想从给定的字符串中找到字符并在其 ASCII 位置用值“1”填充结构数组。如果字符串中不存在字符,则分配值“0”。

进一步我想设置这个结构的“hasVal”字段。例如,a = 1(给定字符串中有冒号),b = 0(字符串中“b”后没有冒号),c = 1, D = 1,E = 1。

最后,如预期输出所示打印此结构。

我不太擅长编程。我刚开始学习C语言。我试过了,但没有得到预期的结果。如果我无法传达我的问题陈述,我深表歉意。

非常感谢任何帮助。提前致谢。

样本.c

#include <stdio.h>
#include <stdlib.h>

#define MAX_CHAR 256

typedef struct {
  int hasVal;
  char *defaultVal;
  char *desc;
} validOpt;

validOpt option[MAX_CHAR] = {};

char *optStr = "a:bc:D:E";


int main() {

int i;
for(i = 0; *(optStr + i); i++)
{
    /*  Not Sure how to check this....
     * check the "char" and ":",
     * if both are present, set the field "hasVal" to 1 or "0".
    */
    if((optStr[i]++) == ":")
        option[optStr[i]--].hasVal = 1;
    else
        option[optStr[i]--].hasVal = 0;

}
printf(“Printing structure…\n”);
printf("\n");
for(i=0; i< MAX_CHAR; i++)
{
    if(option[optStr[i]].hasVal == 1) {
           printf(" %d -- %c\n", i , option[optStr[i]].hasVal);
    }

 }

return 0;
}

实际输出:

[rock12/C_Prog]$ ./sample
 Printing structure…

此行之后没有得到任何东西。

预期输出:

 1) If user enters invalid character, give an error. 
  For Example, "q" -> not valid option

 2) For Valid options, print:
    a - 1
    b - 0
    c - 1
    D - 1
    E - 1

最佳答案

首先,在 main 的末尾,您尝试将 i 作为 charoption[...].hasVal > 作为 int,它不是倒置的吗?

不是执行 *(optStr + i),而是执行 optStr[i]。它完全相同,而且更具可读性。

那么option就是一个validOpt数组。 通过这样做:

option[*(optStr+i)] = 1;

*(optStr+i) == optStr[i] 是一个字符,所以它是一个 ascii 值。 然后您尝试将 validOpt 分配给 1。您不能。因为 validOpt 是一个结构。也许您想执行 validOpt.hasValue = 1

其实我不是很明白你想在这里做什么,如果你能再开发一点就好了:)

关于c - 在 C 中设置结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40333871/

相关文章:

c - SSE 添加字符

c - 为什么这段代码的输出是4?

c++ - 共享内存进程间通信

php - 我可以将数组绑定(bind)到 PDO 查询中的 IN() 条件吗?

java - 将字符串拆分为已定义的数组

python - PEG递归文法

javascript - $parse 的 Angular2 等价物是什么?

c - 从文件读取 IP 地址的最有效方法

sql - 如何在 PostgreSQL 中快速将二维数组嵌套到一维数组中?

c++ - 将包含数字的字符串解析为整数数组