0

私は C を初めて使用します。入力とポインターを読み取る際のいくつかの基本的な資料を理解するのに苦労しています。コマンド ラインに入力した文字列の各文字を読み取って出力するために、 nextChar() 関数を使用したいと考えています。「こんにちは」と入力してみると、「こんにちは」が 6 回表示されます。なぜこれが起こるのか誰か教えてもらえますか?どうすれば修正できますか?お時間をいただきありがとうございます!

#include <stdio.h>
#include <assert.h>
char nextChar(char* ptr)
{
    static int i = -1;
    char c;
    ++i;
    c = *(s+i);
    if ( c == '\0' )
        return '\0';
    else
        return c;
}

void display(char* ptr)
{
    assert(ptr != 0);

    do
    {
        printf("%s", ptr);

    } while (nextChar(ptr));
}


int main(int argc, const char * argv[])
{
    char* ptr=argv[1];

    display(ptr);
    return 0;
}
4

3 に答える 3

1
#include <stdio.h>
#include <assert.h>

char nextChar(const char* ptr){
    static int i = 0;
    char c;

    c = ptr[i++];
    if ( c == '\0' ){
        i = 0;
    }
    return c;
}

void display(const char* ptr){
    char c;
    assert(ptr != 0);

    while(c=nextChar(ptr)){
        printf("%c", c);
    }
}

int main(int argc, const char * argv[]){
    const char* ptr=argv[1];

    display(ptr);
    return 0;
}
于 2013-04-18T22:57:43.137 に答える