为什么这里的代码没有给出预期的输出?

问题描述 投票:0回答:1

此代码用于使用pointer概念声明和打印string

char *strPtr = "HelloWorld";

// temporary pointer to iterate over the string
char *temp = strPtr;
while (*temp != '\0') 
{
    printf("%c", *temp);
    temp++;
}

在这段代码中,我只想将 while 循环替换为 for 循环。 但是在尝试代码时没有给出任何输出。 我的代码如下

char *name = "SAMPLE NAME";
int i;
for (i = 0; name[i] != '\0'; i++)
{
    printf("%c", *name);
}

此代码不起作用。 [给出空白输出] 哪里出错了??

c string pointers
1个回答
1
投票

这个for循环

for (i = 0; name[i] != '\0'; i++)
{
    printf("%c", *name);
}

由于这个语句,应该输出指针名称指向的字符串的第一个字符与字符串长度一样多的次数

    printf("%c", *name);

同样在循环之后你应该输出换行符

'\n'
.

所以循环应该看起来像

for (i = 0; name[i] != '\0'; i++)
{
    printf("%c", name[i]);
}
putchar( '\n' );

如果你想使用一个指针来使用for循环输出字符串那么它可以看下面的方式

for ( const char *p = name; *p != '\0'; p++)
{
    printf("%c", *p);
}
putchar( '\n' );
© www.soinside.com 2019 - 2024. All rights reserved.