程序在c中读取一个char数组

时间:2014-07-12 14:35:02

标签: c

我对C.很新。

#include <string.h>
#include <stdio.h>
int main(int argc, char *argv[])
{ 
    char* c=argv[1];
    for (int i=0;i<sizeof(c);i++)
    {
        printf("%c\n",c[i]);
    }
    return 0;
}

我正在尝试编写一个程序来打印单词的每个字符。

当我尝试测试时:显示 Ť Ë 小号 Ť 当我尝试使用testtesttest时:显示: Ť Ë 小号 吨

我不明白为什么,你能告诉我为什么好吗?

3 个答案:

答案 0 :(得分:5)

两个问题:在指针上使用sizeof运算符会返回指针的大小而不是指向的大小。如果你想要字符串的长度,你应该使用strlen

第二个问题是如果您的程序没有参数会发生什么。然后argv[1]将为NULL

答案 1 :(得分:3)

sizeof运算符返回操作数类型的大小。 c的类型为char *,因此sizeof(c)将返回char *的大小而不是字符串。您应该使用strlen(c)

答案 2 :(得分:3)

sizeof(c)c使用的内存大小,是char*,即char上的指针。此类型占用4个字节的内存,因此t e s t(4个字符)。你想要的是strlen,它给你一个字符串的长度。

#include <string.h>
#include <stdio.h>
int main(int argc, char *argv[])
{ 
    char* c=argv[1];
    int length = strlen(c);
    for (int i=0;i<length;i++)
    {
        printf("%c\n",c[i]);
    }
    return 0;
}

您还应该测试您的程序至少获得一个参数。 argc的长度为argv,因此您需要确保argc > 1