Tag: fgets

在’printf’之后使用’fgets’作为’fgets’在C语言中出现’fgets’在’printf’之前运行

可能重复: 除非换行符在格式字符串中,为什么printf在调用后不会刷新? (在C中) 我在使用printf和fgets时遇到问题,因为在我的代码中, printf写入fget,但它没有运行,它在fgets运行后运行。 enum { max_string = 127 }; static char string[max_string+1] = “”; int main( int argc, char ** argv ) { printf(“Type a String: “); fgets(string, max_string, stdin); printf(“The String is %s\n”, string); return 0; }

如何在结构中正确使用fgets?

我无法弄清楚我的代码有什么问题。 这是我的代码: #include #include #define N 20 typedef struct _dog { char dogName[N],ownerName[N]; int dogAge; } Dog; int main() { //Dynamic array int size; printf(“Number of dogs: “); scanf(“%d”, &size); Dog *dog = (Dog*)malloc(sizeof(Dog)*size); printf(“\n”); //Input int i; printf(“Please provide the data: [dogName][ownerName][dogAge] :\n”); for(i=0;i<size;i++) { fgets(dog[i].dogName, sizeof(dog[i].dogName), stdin); fgets(dog[i].ownerName, sizeof(dog[i].ownerName), stdin); scanf("%d", &dog[i].dogAge); } […]

C从文件中读取以空格分隔的值

我需要从文件中读取文本,并根据读取的信息为结构赋值。 这是文本文件的格式: First Middle Last Address city state zip age sex tenure salary \————————————————————– ADA A AGUSTA 33 BABBAGE ROAD LOVELACE GB 19569 28 F 2 350.50 ISSAC A ASIMOV 99 FICTION WAY AMHERST MA 63948 58 M 6 423.88 HUMPHRY R BOGART 71 SAM STREET HOLLYWOOD CA 48482 56 M 5 366.00 结构我必须把它读成: typedef […]

使用fgets和strtok从文件中读取和解析行

我在使用相当基本的代码时遇到了麻烦。 我需要从下面显示的文件中读取每一行,用strtok将它分成3部分,并将每个部分存储到一个数组中。 “目标”和“助手”的数组工作正常,但由于某种原因,整个名称数组都填充了从文件中读取的姓氏。 输入文件: Redden 2 0 Berglund 5 2 Jackman 2 0 Stewart 4 0 Oshie 3 5 McDonald 2 4 Pietrangelo 2 7 Perron 2 6 Tarasenko 5 5 相关代码: int main(int argc, char* argv){ FILE* inFile = fopen(argv[1],”r”); char ** nameArray; int * goalArray; int * assistArray; int size = countLinesInFile(inFile); allocateMemory(&goalArray, […]

C,如何一起使用fgets和fscanf

我有一份大学作业表。 那就是使用文件IO。 有这样的TXT文件: Brian s213551 50 70 70 50 Alex Fernandes s210011 70 81 50 89 Young Lee s211213 60 80 60 90 … and more 我必须读取此文件并保存到var in struct。 和教授 对我说。 我必须一起使用fgets和fscanf。 如果我只使用fscanf它不能正常工作,因为“Alex Fernandes”中有空间。 但即使我一起使用fgets和fscanf,它也不起作用..所以我需要帮助你。 这是我的来源: #include #include typedef struct sMember{ char name[10]; char id[10]; int score[4]; double avg; char grade; }MEM; int main(int argc, […]

来自stdin问题的fgets

我正在编写一个可以处理文件的程序。 我需要能够将数据作为结构输入,并最终将其读出。 我目前遇到的问题是这个代码: typedef struct { char* name; ….. }employeeRecord; employeeRecord record; char name[50]; if(choice == 1) { /*Name*/ printf(“\nEnter the name:”); fgets(name,50,stdin); record.nameLength = strlen(name) -1; record.name = malloc(sizeof(char)*record.nameLength); strcpy(record.name,name); /*Other data, similar format…*/ 如果我想要,例如,姓名地址和电话号码,并要求连续每一个(所以地址几乎与上面相同,除了用地址替换’名称’),我发现它跳过输入。 我的意思是,我没有机会输入它。 输出实际上输入名称:输入地址:(这里是它提示我输入的地方)

scanf和fgets有问题

这是为家庭作业分配一些给定的字符串。 我正在提示用户他们想要使用scanf排序的字符串数,根据该数字分配一个数组,然后用fgets获取字符串。 如果字符串的数量是硬编码的,那么一切正常,但添加了scanf以让用户决定搞砸了。 这是代码: #include #include #include #define LENGTH 20 // Maximum string length. int main(void) { int index, numStrings = 0; char **stringArray; printf(“Input the number of strings that you’d like to sort: “); assert(scanf(“%d”, &numStrings) == 1); stringArray = (char **)malloc(numStrings * sizeof(char *)); for (index = 0; index < numStrings; index++) { […]

C fgets与fgetc的阅读线

我需要读取一行文本(以换行符结尾)而不对长度做出假设。 所以我现在面对各种可能性: 使用fgets并每次检查最后一个字符是否为换行符并连续追加到缓冲区 使用fgetc读取每个字符,偶尔重新分配缓冲区 Intuition告诉我fgetc变体可能会变慢,但是再一次我没有看到fgets如何在不检查每个角色的情况下做到这一点(我的直觉并不总是那么好)。 线条非常大,因此性能很重要。 我想知道每种方法的优缺点。 先感谢您。

C scanf()和fgets()问题

我正在尝试读取用户输入并将其存储为包含空格的字符串。 我搜索了一个解决方案,并指向fgets()或scanf(%[^ \ n],str)。 但这两种解决方案都给我一个错误。 这就是我所拥有的: //MAX_CHARACTERS is set to 30 scanf(“%d”, &input); if (input == 1){ int pr; char na[MAX_CHARACTERS+1]; printf(“\nEnter the name: “); scanf(“%[^\t\n]”, &na); while (strlen(na)>MAX_CHARACTERS){ printf(“\nName is too long, enter new name: “); scanf(“%[^\t\n]”, &na); }// end na check printf(“\nEnter priority: “); scanf(“%d”, &pr); while (pr>MAX_PRIORITY || pr <MIN_PRIORITY){ printf("\nBad priority, […]

Fgets跳过输入

我试过环顾四周,似乎无法找到错误所在。 我知道它必须与我使用fgets的方式有关但我无法弄清楚它的生命是什么。 我已经读过混合fgets和scanf会产生错误,所以我甚至将我的第二个scanf更改为fgets,它仍会跳过其余的输入,只打印第一个。 int addstudents = 1; char name[20]; char morestudents[4]; for (students = 0; students<addstudents; students++) { printf("Please input student name\n"); fgets(name, 20, stdin); printf("%s\n", name); printf("Do you have more students to input?\n"); scanf("%s", morestudents); if (strcmp(morestudents, "yes")==0) { addstudents++; } } 我的投入是乔,是的,比尔,是的,约翰,不。 如果我使用scanf代替第一个fgets,所有都按计划进行,但我希望能够使用包含空格的全名。 我哪里错了?