c - 从 C 中的 *char[] 变量获取第一个字符

标签 c pointers casting char c-strings

我想获取 C 中字符串的第一个字符 (char[])。

unsigned int N;
unsigned int F;
unsigned int M;
char C;
int main (int argc, char *argv[]){
    if (argc!=5){
        printf("Invalid number of arguments! (5 expected)\n");
        exit(-1);
    }
    N = atoi(argv [1]);
    F = atoi(argv [2]);
    M = atoi(argv [3]);
    C = (char) argv[4]; //this way gives a wrong char value to variable C

上面的代码给了我警告:从不同大小的整数转换为指针。

编辑:正如评论中指出的,argv 是 char *[],而不是 char[]。

最佳答案

有两种主要方法可以做到这一点。第一种是简单地取消引用指针。

C = *argv[4];

您还可以通过数组下标来完成此操作,这会在取消引用指针之前隐式向指针添加偏移量。

一定要先检查是否为null,等等。一般来说,处理指针时需要小心。

关于c - 从 C 中的 *char[] 变量获取第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15301495/

相关文章:

c++ - 为什么我们需要在不分配变量的情况下强制转换它?

c++ - (void (*)(void *))的含义

C# 使用 Convert.ChangeType() 的错误转换

c - SGABIOS 编译错误

c - gcc : ‘asm’ operand has impossible constraints 中的扩展 asm

pointers - 防止 F# 中的垃圾收集器移动对象

c++ - 指针映射与结构/容器映射 (C++)

c - 将整数类型转换为 void*

c - posix线程程序解释?

c - 从文件写入和读取结构或在 c 中相反