我正在用C语言编写一个非常小的程序,它需要判断某个字符串是否为空.为了回答这个问题,我简化了代码:

#include <stdio.h>
#include <string>

int main() {
  char url[63] = {'\0'};
  do {
    printf("Enter a URL: ");
    scanf("%s", url);
    printf("%s", url);
  } while (/*what should I put in here?*/);

  return(0);
}

如果用户只按enter键而不输入任何内容,我希望程序停止循环.

推荐答案

由于C样式的字符串总是以空字符(\0)结尾,因此可以通过写入来判断字符串是否为空

do {
   ...
} while (url[0] != '\0');

或者,您可以使用strcmp函数,该函数过于夸张,但可能更易于阅读:

do {
   ...
} while (strcmp(url, ""));

请注意,如果字符串不同,strcmp将返回非零值,如果字符串相同,则返回0,因此此循环将继续循环,直到字符串为非空.

希望这有帮助!

C++相关问答推荐

由于未签名int导致的运行时错误"

try 使用sigqueue函数将指向 struct 体的指针数据传递到信号处理程序,使用siginfo_t struct 体从一个进程传递到另一个进程

GCC引发不明确的诊断消息

以前版本的tty_ldisc_ops.ioctl()是否也需要文件参数?

用C宏替换strncMP函数中的参数

非常大的数组的大小

为什么该函数不将参数值保存到数据 struct 中?

CC2538裸机项目编译但不起作用

防止规范模式在C++中 echo 特殊字符

是否可以通过调用两个函数来初始化2D数组?示例:ARRAY[STARTING_ROWS()][STARTING_COLUMNS()]

如何读取文件并将内容保存在字符串中?(在C语言中,没有崩溃或核心转储错误)

C整型和_泛型.哪些类型是兼容的?

不使用任何预定义的C函数进行逐位运算

静态初始化顺序失败是否适用于C语言?

为什么我的半数组测试和奇数组测试不起作用?(我使用Assert进行调试)

C语言中的指针和多维数组

从系统派生线程调用CRT

使用 _Atomic float 时,MSVC 编译的代码会命中调试断言

通过修改c中的合并排序对数组的偶数索引进行排序

C23 中是否有 __attribute__((nonnull)) 的等效项?