Tag: scanf

使用fscanf读取ASCII代码文件

我正在尝试读取ASCII文本文件并将其写入二进制文件。 文本文件的大小不受限制。 首先,我在写之前尝试读取文本文件。 但是,我一直在分段错误。 我不明白可能导致问题的原因。 即使使用gdb,我仍然无法弄清楚问题。 请指教。 码: # include # include # include typedef struct _FileData { int a; double b; char dataStr[56]; }FileData; int main() { FILE * infile=fopen(“output.txt”, “r”); if(infile==NULL) { printf(“Error opening file”); exit(1); } FileData **input; int i=0; while( fscanf(infile,”%d %f %[^\n]s”,&input[i].a,&input[i].b,&input[i].dataStr)! =NULL) { printf(“%d”,input[i].a); printf(“%.3f”,input[i].b); printf(“%[^\n]s”,input[i].dataStr); i++; } return […]

C – 读取scanf直到feof(stdin),不输出错误

我在我的程序中使用scanf()函数来扫描整数。 我这样做的方式是: while (!feof (stdin)) if (scanf(“%d”, &height) != 1) { puts(“Wrong input!”); return 1; } 问题是,在实际执行EOF之后,我得到了错误的输入并返回1,因为scanf没有返回1.我该如何解决这个问题?

从stdin读取字符串

我试图用这种格式从stdin读取一行: Boston “New York” “San Francisco” Memphis (请注意,其中包含空格的字符串位于括号之间。另请注意,每个城市名称都以空格分隔。)我试图一次用scanf读取一个, fgets整行然后标记,但结果不好。 我假装将所有内容存储在多维字符数组中供以后使用。 关于如何解决这个问题的任何建议? 先感谢您!

用户在运行时动态输入多个输入

如何在运行时通过c中的用户选择获取多个整数输入。 这里输入的第一行是测试用例的数量。 然后我在这种情况下计算输入数字的总和。 测试用例: 输入 3 1 6 7 2 7 3 4 2 1 输出: 14 16 3 我们可以用这种方式修改 scanf(),以便它可以处理这个动态输入。 我不能将该行作为字符串输入,然后将它们分成数字。 我们可以使用空格和\ n来决定数字,就像我们将字符串作为输入一样作为例子: scanf(“%[^\n]”,&str);

使用printf和scanf写入c不能按预期工作

所以我是C的新手。我正在使用带有MinGW编译器的eclipse。 我在第二章使用scanf和printf函数,我的程序正在运行,但只有在我将三个整数输入scanf函数后才将语句打印到控制台。 #include int main(void){ int length, height, width, volume, dweight; printf(“Enter the box length: “); scanf(“%d”, &length); printf(“\nEnter the box width: “); scanf(“%d”, &width); printf(“\nEnter the box height”); scanf(“%d”, &height); volume = length * width * height; dweight = (volume + 165) / 166; printf(“Dimensions: l = %d, w = %d, h = %d\n”, […]

getchar()和scanf中的输入缓冲区

很抱歉,因为我无法想到任何更好的标题我有一个问题处理输入这是我的测试代码,它将输入到字符串数组然后再次在屏幕上打印,非常简单 第一个测试代码正常工作 #include int main() { int i, index; char d, c[20]; scanf(“%d”, index); for(i=0; i<index; i++){ *(c+i) = getchar(); if (*(c+i)=='$') break; } printf("the string is %s", c); return 0; } 第二个测试代码,我确实使用了指针而不是c [i]而且程序没有运行。 这很奇怪,因为*(c + i)和c [i]是等价的 我变了 *(c+i) = getchar(); // (0) if (*(c+i)==’$’) 至 c[i] = getchar(); // (1) if (c[i]==’$’) 要么 […]

C中的字符数组和scanf函数

我希望在下面的代码中得到错误,但我没有。 我没有使用&签名。 我也正在编辑char的数组。 #include int main() { char name[10] =”yasser”; printf(“%s\n”,name); // there is no error , // trying to edit array of chars, // also did not use & sign. scanf(“%s”,name); // did not use strcpy function also. printf(“%s\n”,name); return 0; }

使用C scanf_s输入字符串

我一直在努力寻找答案,但我找不到答案。 我想插入一个读取字符串的部分,如“Hello”字符串并存储并可以在需要时显示它,以便printf(“%s”, blah); 产生Hello 。 这是给我带来麻烦的代码部分 char name[64]; scanf_s(“%s”, name); printf(“Your name is %s”, name); 我知道printf不是问题; 在提示输入某些内容后程序崩溃。 请帮忙?

为什么scanf(“%s”,&str); 表现为scanf(“%s”,str);?

看下面的代码: #include int main() { char str[80]; int n; scanf(“%s%n”,str,&n); printf(“%s\t%d”,str,n); putchar(‘\n’); getchar(); //to remove ‘\n’ scanf(“%s%n”,&str,&n); printf(“%s\t%d”,str,n); return 0; } 这是输入和输出: abc abc 3 123 123 3 我们知道, scanf是一个可变参数函数,因此在调用它时它的参数不会被强制转换。 因此,参数必须以与它们应该完全相同的类型传递。 但是, str的类型是char * (从char (*)[80]衰减),而&str的类型为char (*)[80] ,尽管它们具有相同的值 ,即&str[0] 。 那么为什么scanf(“%s”,&str); 正确工作而不会因指针运算而导致段错误?

scanf的quadmath和参数类型

我使用 。 使用哪种参数类型可以正确读取输入? 如果我使用双倍,它看起来像: printf(“enter 3 values for s, t and mt:\n”); scanf(“%lf %lf %lf”, &s, &t, &mt); printf(“%lf %lf %lf\n”, s, t, mt); 我尝试了不同的可能性,而不是“l”,例如: scanf(“%Qf %Qf %Qf”, &s, &t, &mt); 甚至没有 scanf(“%f %f %f”, &s, &t, &mt); 但是我收到了一个错误。