简单的C指针程序,没有运行

时间:2016-12-01 20:13:56

标签: c pointers declaration

我有以下简单的c程序我试图在CLion中运行但是告诉我我的char需要是一个指针,我已经设置为指针并声明为数组abc所以我不确定是什么问题是或如何调试它!代码最初是一个演讲样本,我添加了指针声明,看看运行时会发生什么。任何帮助将是欣赏。

#include <stdio.h>
#include <stdint.h>

int main() {
    char *a;
    char abc[5];
    a = abc;
    int i = 0;

    while (1 == scanf("/%[^/ \t\n]", a[i++]))
        printf(">%s<\n", a[i-1]);
}

2 个答案:

答案 0 :(得分:3)

即使a是指针,a[i++]也不是。一般来说,a[x]相当于*(a + x),因此在您的情况下就好像您有*(a + i++),其中*取消引用指针。您可以使用&a[i++]将其重新转换为指针,或a + i++

答案 1 :(得分:1)

scanf需要一个指针来将扫描结果放入。这是因为在C中,参数是按值传递的,因此无法以调用者将看到的方式写入。我们通过将指针传递给原始变量来解决这个问题,然后被调用的函数可以直接以调用者将看到的方式写入原始变量。尝试更改:

while (1 == scanf("/%[^/ \t\n]", a[i++]))

while (1 == scanf("/%[^/ \t\n]", a + i++))