存储未知字符串长度的标准输入

时间:2017-03-16 02:50:10

标签: c stdin fgets

我正在编写一个程序,要求用户输入关于他们自己的基本用户信息并将其临时存储到内存中,以便稍后转移到二进制文件。

以下是我对代码进行malloc变换的代码摘录。

userInput = (char*)malloc(sizeof(char));
firstName = (char*)malloc(sizeof(char));
lastName = (char*)malloc(sizeof(char));
companyName = (char*)malloc(sizeof(char));
phoneNum = (char*)malloc(sizeof(char) * 10);
email = (char*)malloc(sizeof(char));

以上变量都是未知大小,除了phoneNum,长度可以是10个字符。

然后我问用户输入:

printf("First Name: ");
fgets(firstName, sizeof(firstName), stdin);

printf("Last Name: ");
fgets(lastName, sizeof(lastName), stdin);

printf("Company Name: ");
fgets(companyName, sizeof(companyName), stdin);

do{
    printf("Phone Number: ");
    fgets(phoneNum, sizeof(phoneNum), stdin);
    flag = 1;
    for (i = 0; i < strlen(phoneNum); i++){
        if(isdigit(phoneNum[i]) == 0){
            flag = 0;
            break;
        }
    }
} while (flag == 1);

printf("Email: ");
fgets(email, sizeof(email), stdin);


printf("-------------\nFirst: %sLast: %sCompany: %sPhone: %sEmail: %s\n", firstName, lastName, companyName, phoneNum, email);

编译时的输出:

编译器显示:

First Name: Test
Last Name: Last
Company Name: Yes
Phone Number: 123456789
Phone Number: Email: johndoe@email.com
-------------
First: Test
Last: Last
Company: Yes
Phone: 89
Email: johndoe

它可能与内存有关,但我不知道如何使用malloc来获取我不知道的大小变量。我对手机的错误检查也没有按照预期的方式运行。任何帮助将不胜感激。

0 个答案:

没有答案