【问题标题】:changing characters of character array using a pointer使用指针更改字符数组的字符
【发布时间】:2016-11-13 18:00:31
【问题描述】:

没那么复杂,我的问题是我不明白如何使用指针更改字符数组的变量

#include "stdio.h"

int main(void) {
// Disable stdout buffering
setvbuf(stdout, NULL, _IONBF, 0);

char a[100], ch, *counter;
int c = 0, i;

counter = a[0];
printf("please enter a sentance:");


while ((ch = getchar()) != '\n'){
    printf("yo");
    *counter = ch;     //problem is here
    counter = a[c];
    c = c + 1;
}
printf("hi\n");

for(i = c-1; i >= 0; i--){
    printf("%c", a[i]);
}

return 0;
}

错误是“以非零状态退出”

【问题讨论】:

  • 编译时counter = a[0];行会报错吗?
  • counter = a[0]; --> counter = &a[0]; or counter = a;, counter = a[c]; --> counter++;

标签: c arrays pointers character


【解决方案1】:

您需要以下内容

counter = a;
^^^^^^^^^^^
printf("please enter a sentance:");


while ((ch = getchar()) != '\n'){
    printf("yo");
    *counter++ = ch;     //problem is here
    ++c;
}

while ( c != 0 ) printf("%c", a[--c]);

甚至以下

counter = a;
^^^^^^^^^^^
printf("please enter a sentance:");


while ((ch = getchar()) != '\n'){
    printf("yo");
    *counter++ = ch;     //problem is here
}

while ( counter != a ) printf( "%c", *--counter );

【讨论】:

    【解决方案2】:

    存在三个问题。

    1. 计数器=一个[0]; 您正在将 a[0] 处的值分配给指针。你需要的是这个。

    计数器 = &(a[0]);

    或者更好

    计数器 = a;

    1. 计数器 = a[c];

    与第 1 点相同。您不必这样做,因为计数器已经指向数组。只需增加指针即可。

    1. 由于您的数组长度为 100,因此您只能存储 99 个字符 + 一个空字符。所以你需要有一个柜台。所以使用 c 作为计数器。

    改变

    while ((ch = getchar()) != '\n'){
        printf("yo");
        *counter = ch;     //problem is here
        counter = a[c];
        c = c + 1;
    }
    

    i = 0;
    while ((ch = getchar()) != '\n' && ((sizeof(a)/sizeof(a[0])-1)>c)){
        printf("yo");
        *counter = ch;
        counter++;
        c++;
    }
    *counter = '\0';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 2021-06-28
      • 2015-08-12
      相关资源
      最近更新 更多