gpt4 book ai didi

c - int c = getchar()?

转载 作者:太空狗 更新时间:2023-10-29 16:25:45 28 4
gpt4 key购买 nike

好的,我正在读这本书:The C Programming Language - By Kernighan and Ritchie(第二版)和其中一个例子,我无法理解事情是如何工作的。

#include <stdio.h>

#define MAXLINE 1000

int getline(char line[], int maxline);
void copy(char to[], char from[]);

int main(int argc, char *argv[])
{
int len;

int max;
char line[MAXLINE];
char longest[MAXLINE];

max = 0;
while((len = getline(line, MAXLINE)) > 1)
{
if(len > max)
{
max = len;
copy(longest, line);
}
}
if(max > 0)
printf("%s", longest);

getchar();
getchar();
return 0;
}

int getline(char s[], int lim)
{
int c, i;

for(i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
s[i] = c;
if(c == '\n')
{
s[i] = c;
++i;
}
s[i] = '\0';

return i;
}

void copy(char to[], char from[])
{
int i;

i = 0;
while((to[i] = from[i]) != '\0')
++i;
}

行:for(i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i)它说c = getchar(),如何从命令行输入一个整数=字符?整数是的,但我输入的字符是如何存储的?

提前致谢

最佳答案

与您可能使用过的某些其他语言不同,C 中的字符 整数。 char 只是另一种整数类型,通常是 8 位,小于 int,但仍然是整数类型。

因此,您不需要存在于您可能使用过的其他语言中的 ord()chr() 函数。在 C 中,您可以使用强制转换或仅通过赋值在 char 和其他整数类型之间进行转换。

除非发生 EOF,否则 getchar() 被定义为返回“一个转换为 int 的无符号字符”(same as fgetc),所以如果它对您有帮助,您可以想象它读取一些字符,c,然后返回 (int)(unsigned char)c

您可以仅通过强制转换或赋值将其转换回 unsigned char,如果您愿意稍微损失理论上的可移植性,您可以将其转换为 char 进行强制转换或将其分配给 char

关于c - int c = getchar()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7119470/

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