Tag: fgets

fgets指令被跳过了,为什么?

每当我在fgets之前执行scanf,fgets指令就会被跳过。 我用C ++来讨论这个问题,我记得我不得不进行一些修改,以清除stdin缓冲区或类似的东西。 我想这和C有一个相同的意义。 谢谢。

将txt文件的每一行读取到新的数组元素

我正在尝试将文本文件的每一行读入一个数组,并将每行都放入一个新的元素中。 我的代码到目前为止。 <?php $file = fopen("members.txt", "r"); $i = 0; while (!feof($file)) { $line_of_text = fgets($file); $members = explode('\n', $line_of_text); fclose($file); ?>

用fgets读取一行strcmp

我试图比较两个string。 一个存储在一个文件中,另一个从用户(stdin)中获取。 这是一个示例程序: int main() { char targetName[50]; fgets(targetName,50,stdin); char aName[] = "bob"; printf("%d",strcmp(aName,targetName)); return 0; } 在这个程序中,当input是"bob"时, strcmp返回一个-1的值。 为什么是这样? 我认为他们应该是平等的。 我怎样才能得到它,所以他们是?

C – scanf()vs gets()vs fgets()

我一直在做一个相当简单的程序转换string(假设数字input)到一个整数。 完成之后,我注意到一些非常奇怪的“bug”,我不能回答,主要是因为我对scanf() , gets()和fgets()函数的工作知之甚less。 (尽pipe我读过很多文献。) 所以不用写太多的文字,这里是程序的代码: #include <stdio.h> #define MAX 100 int CharToInt(const char *); int main() { char str[MAX]; printf(" Enter some numbers (no spaces): "); gets(str); // fgets(str, sizeof(str), stdin); // scanf("%s", str); printf(" Entered number is: %d\n", CharToInt(str)); return 0; } int CharToInt(const char *s) { int i, result, temp; result = […]

在scanf之后,fgets不起作用

#include <stdio.h> #include <string.h> #include <ctype.h> void delspace(char *str); int main() { int i, loops; char s1[101], s2[101]; scanf("%d", &loops); while (loops–) { fgets(s1, 101, stdin); fgets(s2, 101, stdin); s1[strlen(s1)] = '\0'; s2[strlen(s2)] = '\0'; if (s1[0] == '\n' && s2[0] == '\n') { printf("YES\n"); continue; } delspace(s1); delspace(s2); for (i = 0; s1[i] != […]

从fgets()input中删除尾随的换行符

我试图从用户获取一些数据,并将其发送到gcc中的另一个函数。 代码是这样的。 printf("Enter your Name: "); if (!(fgets(Name, sizeof Name, stdin) != NULL)) { fprintf(stderr, "Error reading Name.\n"); exit(1); } 不过,我发现最后还是换了一个换行符。 所以如果我inputJohn它最终发送John\n 。 如何删除\n并发送正确的string。

为什么gets函数非常危险,不应该使用?

当我尝试编译使用gets函数的C代码时,我得到一个警告: warning: the gets function is dangerous and should not be used. 我记得这与堆栈保护和安全有关,但我不确定为什么。 有人可以帮我解决这个警告,并解释为什么有这样的警告? 如果gets是如此“危险”,那么为什么我们不能删除它?