gpt4 book ai didi

C 编程初学者 - 请解释这个错误

转载 作者:太空狗 更新时间:2023-10-29 17:14:36 24 4
gpt4 key购买 nike

我刚从 C 开始,正在尝试 Ritchie 书中的几个示例。我写了一个小程序来理解字符数组,但偶然发现了一些错误,并希望对我理解错误的地方有一些见解:

#include <stdio.h>
#define ARRAYSIZE 50
#include <string.h>

main () {
int c,i;
char letter[ARRAYSIZE];
i=0;
while ((c=getchar()) != EOF )
{
letter[i]=c;
i++;
}
letter[i]='\0';
printf("You entered %d characters\n",i);
printf("The word is ");

printf("%s\n",letter);
printf("The length of string is %d",strlen(letter));
printf("Splitting the string into chars..\n");
int j=0;
for (j=0;j++;(j<=strlen(letter)))
printf("The letter is %d\n",letter[j]);
}

输出是:

$ ./a.out 
hello how are youYou entered 17 characters
The word is hello how are you
The length of string is 17Splitting the string into chars..

发生了什么事?为什么 for 循环不提供任何输出?

最佳答案

语法应该是;

for (j=0; j<strlen(letter); j++)

因为 strlen 是一个开销很大的操作,而且你不修改循环内的字符串,所以最好这样写:

const int len = strlen(letter);
for (j=0; j<=len; j++)

此外,强烈建议在使用 C 字符串和用户输入时始终检查缓冲区溢出:

while ((c=getchar()) != EOF && i < ARRAYSIZE - 1)

关于C 编程初学者 - 请解释这个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10521101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com