gpt4 book ai didi

c - 使用 C 从用户那里获取一些字符串输入

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:17 25 4
gpt4 key购买 nike

我不太熟悉C语法。我需要根据用户输入处理一些数据。虽然我成功处理了数据,但我卡在了用户输入部分。我删除了不必要的数据处理部分,并做了一个简单的例子来说明我是如何接受用户输入的。谁能告诉我以下代码有什么问题:

int i, number;
char *str;
str=(char*)malloc(1000*sizeof(char));
printf("Enter count : ");
scanf("%d", &number);
for(i=0; i<number; i++)
{
printf("\nEnter string: ");
scanf ("%[^\n]%*c", str);
printf("%s", str);
}

输出:

“输入计数:”看起来不错,但每当我提供一些值并按下回车键时,它只显示“计数”个输入字符串:而不允许用户输入字符串。

例如——

Enter count : 2

Enter string:
Enter string:

但是如果我丢弃计数输入部分并提供任何固定值,例如

for(i=0; i<5; i++)

一切正常

提前致谢

最佳答案

仅供引用,for(i=0; i<number; i++) 中没有问题,问题出在扫描逻辑中。

实际上,scanf ("%[^\n]%*c", str);是不正确的。你应该使用 %s读取字符串,而不是 %c ,读取单个字符,包括 ENTER(换行符)。

相反,我建议使用 fgets()用于输入。它在各个方面都好多了。查看手册页 here .

也许你可以使用类似的东西

//Dummy code

int i, number;
char *str;

printf("Enter count : ");
scanf("%d", &number);
str=malloc(number*sizeof(char)); //yes, casting not required
fgets(str, (number-1), stdin ); //"number" is used in different context
fputs(str, stdout);

编辑:

工作代码

#include <stdio.h>
#include <stdlib.h>

#define SIZ 1024

int main()
{
int i, number;
char * str = malloc(SIZ * sizeof (char));

printf("Enter the number :\n");
scanf("%d", &number);
getc(stdin); //to eat up the `\n` stored in stdin buffer
for (i = 0; i < number; i++)
{
printf("Enter the string %d :", (i+1));
fgets(str, SIZ-1, stdin);
printf("You have entered :");
fputs(str, stdout);
}

return 0;
}

关于c - 使用 C 从用户那里获取一些字符串输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27037646/

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