gpt4 book ai didi

c - 为什么它不调用 fgets?

转载 作者:太空宇宙 更新时间:2023-11-04 01:18:22 24 4
gpt4 key购买 nike

<分区>

代码的目的是查看字符串是如何存储的(是否以\n\0 结尾)。

void print(char*);

int main(void) {

//fscanf block
char *ss;
ss = malloc(sizeof(char)*100);
printf("String for fscanf: ");
fscanf(stdin, "%s", ss);
printf("For fscanf:\n");
print(ss);

//fgets block
char *gs;
gs = malloc(sizeof(char)*100);
printf("String for fgets: ");
fgets(gs, 10, stdin);
printf("For fgets:\n");
print(gs);

free(ss);
free(gs);
}

void print(char* str) {
int done = 0;
for (int i=0; i<100; i++){
if (done == 3) {
break;
}
if (str[i] == '\0') {
printf("Zero: %d\n", i);
done++;
}
if (str[i] == '\n') {
printf("Return: %d\n", i);
done++;
}
}
}

但是由于某些原因,当我首先放置 fscanf block 时,它不会停止并请求 fgets 字符串,它只是跳过并输出:

String for fscanf: Hello
For fscanf:
Zero: 5
Zero: 6
String for fgets: For fgets:
Return: 0
Zero: 1

但是当我把 fgets block 放在第一位时,它工作正常:

String for fgets: Hello
For fgets:
Return: 5
Zero: 6
String for fscanf: Hello
For fscanf:
Zero: 5
Zero: 6

为什么会这样?

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