c - 如何避免在 C 中将字符串作为数组循环?

标签 c

<分区>

在这个例子中,我尝试将整数文字与 types[] 数组相匹配。从技术上讲,printf() 应该是 printf("The variable %c = %d (%s)\n"),但如果我没有将 types[i] 指定为字符,则会出错。

#include <stdio.h>
#include <string.h>

extern int ints[];
extern char strs[];
extern char types[];
extern void intro();

int ints[] = {
  212, 215u, 0xFeeL, 07, 032U, 85, 0213, 0x4b, 30, 30u, 30l, 30ul  
};

char strs[] = {
  'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'  
};

char types[] = {
    "decimal",
    "decimal unsigned",
    "hexadecimal long",
    "octal",
    "octal unsigned",
    "decimal",
    "octal",
    "hexadecimal",
    "decimal",
    "decimal unsigned",
    "decimal unsigned",
    "decimal unsigned long"
};

int main(){
    int i;
    for(i = 0; i < 12; i++){
       printf("The variable %c = %d (%c) \n", strs[i], ints[i], types[i]);
    }
    return 0;
}

void intro(){
    printf("------\n");
    printf("Looping through these results \n");
    printf("------\n");   
}

我敢肯定,对于任何有 C 语言经验的人来说,我都缺少一些简单的东西。

谢谢!

最佳答案

你犯了一个愚蠢的错误。错误在于您的 types[] 数组是字符数组而不是字符串数组。

一个字符是:

char types = 'a';

一个字符数组是:

char types[] = {'a', 'b'};

一个字符串是:

char types[] = "hello";

还有:

char *types = "hello";

一个字符串数组是:

char *types[] = {"hello", "world"};

你打算做的是:

char *types[] = {
    "decimal",
    "decimal unsigned",
    "hexadecimal long",
    "octal",
    "octal unsigned",
    "decimal",
    "octal",
    "hexadecimal",
    "decimal",
    "decimal unsigned",
    "decimal unsigned",
    "decimal unsigned long"
};

现在您可以将 printf 更改为:

printf("The variable %c = %d (%s) \n", strs[i], ints[i], types[i]);

关于c - 如何避免在 C 中将字符串作为数组循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53796943/

相关文章:

c - C语言的简单服务器

c++ - 定义宏后的哈希符号?

c - 如何等待子进程并获取其返回值

c++ - 等号是否在 char * 中重新分配内存?

我们可以在不使用 brk() 系统调用的情况下实现 Malloc 函数吗

c - 导出时未创建 Linux GPIO 值文件

c - 如何在C编程中正确终止字符串?

c - C中的信号控制

将结构值复制到缓冲区(客户端)并将其检索到缓冲区(服务器端)

c++ - libcurl 和 DNS ttl 中的内部连接管理