【问题标题】:How to input an empty string in c from command prompt如何从命令提示符在 c 中输入一个空字符串
【发布时间】:2022-01-21 13:26:10
【问题描述】:

我一直在修改我的技能,就像我第一次接触 C 语言一样,从头开始我自己正在解决一些问题。在我编写一个输出输入字符串长度的程序的方式中,代码如下所示。

#include<stdio.h>
int main()
{
    char a[100];
    int n=0;
    printf("Enter the string : ");
    scanf("%s",a);
    while(a[n]!='\0')
    n++;
    printf("length of %s is %d\n",a,n);
}

成功了。但是突然想到为什么不输入一个空字符串并检查输出是否为0(零)。我尝试在我通常运行我的代码的命令提示符下按 enter。但它会继续询问输入,直到并且除非我输入了一个有效的输入,即带有字符的字符串。但是我怎样才能从命令提示符输入手动字符串它是否会发生或是否会发生。希望我的问题得到解答?

【问题讨论】:

    标签: c scanf c-strings is-empty strlen


    【解决方案1】:

    你的下面

    a[0] = '\0';
    scanf( "%99[^\n]", a );
    

    if (scanf( "%99[^\n]", a ) == 0) a[0] = '\0';
    

    另一种选择是使用fgets。但是即使输入为空,该函数也可以将换行符 '\n' 附加到输入字符串。例如,您需要将其删除

    #include <string.h>
    #include <stdio.h>
    
    ...
    
    fgets( a, sizeof( a ), stdin );
    a[ strcspn( a, "\n" ) ] = '\0';
    

    【讨论】:

    • 你能解释一下代码中到底发生了什么吗? '99' 用于限制我们输入的字符,'^\n' 就像一个表达式或自动机。 scanf 在这里返回 0。所以如果不明确告诉 a[0]='\0'; 就不可能做到这一点。帮帮我
    • @BhanuPrakashSakkuri 当您立即按下 Enter 键时,字符串中不会存储任何内容。所以你需要自己设置终止零来制作一个空字符串。这些符号 ^\n 表示在按下 Enter 之前一直读取
    猜你喜欢
    • 2012-06-19
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多