Tag: scanf

使用C中的scanf解析输入

我一直在试图找出如何使用scanf()遇到很多问题。 它似乎与整数一起使用,相当直接的scanf(“%d”, &i) 。 我scanf()问题是在循环中使用scanf()尝试读取输入。 例如: do { printf(“counter: %d: “, counter); scanf(“%c %c%d”, &command, &prefix, &input); } while (command != ‘q’); 当我输入一个有效结构的输入,如c P101 ,它似乎再次循环,然后提示我。 即使只有一个,这似乎也会发生: scanf(“%c”, &c) 在一个循环中。 在再次提示我之前,它会进行两次循环。 是什么让它循环两次,我该如何阻止它? 当我输入较少量的输入时,编程上不会有另一个字符或数字,如q ,按Enter似乎提示我输入更多。 如何让scanf()处理单字符和双字符条目?

C:我怎么能这样做,所以scanf()输入有两种格式之一?

我需要做这个程序,它需要两个三角形并比较它们。 基本上一切都很好,除了用户输入初始数据的部分。 我的主要问题是其中一个条件是用户可以输入三角形的三边长度或三个顶点的X,Y坐标。 我需要它像以下任何一种一样工作: 此输入表示用户使用的边长: { 5 , 5 , 5 } 此输入表示用户使用顶点的X,Y坐标: { [ 1 ; 1 ] , [ 3 ; 1 ] , [ 2 ; 2 ] } 这是我的代码我是如何尝试解决它的,但出于某种原因,如果用户输入使用顶点的第一个条件,检查它是否不是边长,会搞砸一切。 #include int main() { double a, b, c, A[2], B[2], C[2]; char s; if(scanf(” { [ %lf ; %lf ] , [ […]

为什么scanf()需要&运营商(地址)在某些情况下,而不是其他情况?

为什么我们需要在scanf()放置一个&运算符来存储整数数组中的值,而不是将字符串存储在char数组中? int a[5]; for(i=0;i<5;i++) scanf("%d",&a[i]); 但 char s[5]; scanf(“%s”,s); 我们需要传入存储值的地址,因为数组是指向第一个元素的指针。 因此在int / float数组的情况下,它基本上意味着(a+i) 。 但是字符串的情况怎么样?

scanf的exception行为

我有如下代码扫描矩阵,w – 矩阵的宽度,矩阵的h – 高度。 我正在使用Visual Studio 2010。 每次我得到一个字符时它会将j增加2(我把断点放到了解这个行为)。 int w = 0, h = 0; char map[21][21]; int i,j; scanf(“%d%d”, &w, &h); for(i = 1; i <= h; ++i){ for(j = 1; j <= w; ++j){ //fflush(stdin); scanf("%c",&map[i][j]); //fflush(stdin); } } 这背后的原因是什么? 在扫描时我给出值,w = 7,h = 5。 我的代码中没有看到任何错误….请帮助我。

如何使用scanf()扫描包含空格的字符串?

我想编写一个子程序,用户可以在其中输入注释。 我使用scanf(“%s”, X)并让它们输入注释,但它只能将字存储在字符串中的空格键之前。 如何将整个句子存储到字符串或文件中来解决此问题? 我的代码如下: FILE *fp; char comment[100]; fp=fopen(“comment.txt”,”a”); printf(“You can input your comment to our system or give opinion to the musics :\n”); scanf(“%s”,comment); fputs(comment,fp);

为什么scanf必须采用运算符的地址

正如标题所说,我总是想知道为什么scanf必须采用运算符(&)的address of 。

scanf(“%c”,&c)和scanf(“%c”,&c)之间的差异

请考虑以下C代码段: #include int main() { int a; char c; scanf(“%d”,&a); scanf(“%c”,&c); printf(“int=%d\n”,a); printf(“char=%c\n”,c); } 我只能输入整数而不能输入字符。输出只是整数值,第二个printf语句没有输出值。 但是,如果我在格式说明符之前使用空格: scanf(” %c”,&c); 它按预期工作。 为什么会这样? 有人告诉我它与清除输入缓冲区有关。 有人会对此有所了解吗?

当格式字符串末尾有换行符时,为什么scanf要求输入两次?

#include #include #include char *method1(void) { static char a[4]; scanf(“%s\n”, a); return a; } int main(void) { char *h = method1(); printf(“%s\n”, h); return 0; } 当我运行上面的代码时,提示符要求我两次输入(我只在代码中使用一次scanf )。 这是为什么? (我输入’jo’;它要求更多输入,所以我再次输入’jo’。然后它只打印出’jo’一次。)

为什么我的scanf语句中的空格有所不同?

当我运行下面的代码时,它按预期工作。 #include int main() { char c; scanf(“%c”,&c); printf(“%c\n”,c); scanf(” %c”,&c); printf(“%c\n”,c); return 0; } 如果我删除第二次scanf调用中的空格( scanf(“%c”,&c); ),程序会出现第二次扫描的不良行为,扫描’\n’并输出相同的内容。 为什么会这样?

将文本文件中的数字读入C中的数组

我是编程菜鸟所以请耐心等待。 我正在尝试将文本文件中的数字读入数组。 文本文件“somenumbers.txt”只包含16个数字,如“5623125698541159”。 #include main() { FILE *myFile; myFile = fopen(“somenumbers.txt”, “r”); //read file into array int numberArray[16]; int i; for (i = 0; i < 16; i++) { fscanf(myFile, "%d", &numberArray[i]); } for (i = 0; i < 16; i++) { printf("Number is: %d\n\n", numberArray[i]); } } 该计划不起作用。 它编译但输出: 编号是:-104204697 数字是:0 编号是:4200704 编号是:2686672 编号是:2686728 […]