我做了包含一些函數的ac源文件'functions.c',頭文件'functions.h'包含函數和一個'main.c'源文件。現在我使用main來調用functions.c中的函數,使用functions.h中的原型。下面是'functions.c'文件中的一個函數。gets()不要求輸入,除非在它之前使用getchar()或另一個gets()
我的代碼:
#include "functions.h"
#include <stdio.h>
#include <string.h>
void func1(void)
{
int i, j, k, l;
char string[25];
printf("Enter any valid 10 digit mobile number\n");
here:
//getchar();
gets(string);
j = k = 0;
for (i = 0; string[i] != '\0';)
{
if (string[i] <= 57 && string[i] >= 48)
i++;
else if (string[i] == 45 || string[i] == 46 || string[i] == 47 || string[i] == 42 || string[i] == 95 || string[i] == 124 || string[i] == 58 || string[i] == 92 || string[i] == 59 || string[i] == 0)
{
i++;
k++;
} //some special characters allowed
else
{
printf("%c is not a valid digit or symbol for a mobile number\n", string[i]);
j++;
i++;
}
}
if ((i - k) == 10 && j == 0)
printf("Mobile number is valid\n");
if ((i - k) != 10 || j != 0)
{
printf("Mobile number is invalid\nEnter 1 to try again or 2 to exit\n");
scanf("%d", &l);
if (l == 1)
{
printf("Enter mobile number again\n");
goto here;
}
else if (l == 2)
printf("Program Terminating\n");
else
printf("You didn't enter either of 1 or 2\nProgram Terminating\n");
}
}
現在我的問題是 -
1 「?爲什麼得到()不工作爲什麼得到()不要求任何輸入」 2「爲什麼當我在代碼中包含getchar()時,它會開始詢問輸入?我的意思是當我從getchar()中刪除註釋符號?」
我是一個新手..所以請去軟..謝謝你的答案。
該問題將由於未定義的行爲(UB)由您的代碼的其他部分調用。請發佈您的代碼 – amdixon
請嘗試創建[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve),並編輯您的問題以包含該問題。還包括輸入和實際以及預期的輸出。 –
另外,不要使用'gets',這是危險的,自C99標準以來已被棄用,並且在C11標準中被實際刪除。 –