相关疑难解决方法(0)

为什么获取功能如此危险以至于不应该使用它?

当我尝试编译使用gets()GCC函数的C代码时,

我明白了

警告:

(.text + 0x34):警告:`gets'函数很危险,不应该使用.

我记得这与堆栈保护和安全性有关,但我不确定为什么?

有人可以帮我删除这个警告并解释为什么会有这样的使用警告gets()

如果gets()是如此危险,为什么我们不能删除它?

c gets fgets buffer-overflow

210
推荐指数
9
解决办法
14万
查看次数

从空间字符输入读取字符串?

我正在使用Ubuntu,我也使用Geany和CodeBlock作为我的IDE.我正在尝试做的是读取一个字符串(如"Barack Obama")并将其放在一个变量中:

#include <stdio.h>

int main(void)
{
    char name[100];

    printf("Enter your name: ");
    scanf("%s", name);
    printf("Your Name is: %s", name);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

Enter your name: Barack Obama
Your Name is: Barack
Run Code Online (Sandbox Code Playgroud)

如何让程序读取整个名称?

c string whitespace input scanf

93
推荐指数
5
解决办法
50万
查看次数

C的"坏"功能与其"好"替代品相比

C中的"坏"功能是什么,它们的"好"选择是什么?

为什么坏的不好,是什么让好的更好?

我知道,例如,它gets()是"坏的",因为它没有任何形式的边界检查.什么是更好的选择?gets()

我听说gets()很糟糕,但我不记得为什么.谁知道?什么是最好的选择?

还有更多吗?

c function

66
推荐指数
6
解决办法
3万
查看次数

scanf()和fgets()之间的区别

我想知道fgets()和之间有什么区别scanf().我使用C作为我的平台.

c scanf fgets

33
推荐指数
3
解决办法
5万
查看次数

如何在c中使用scanf输入字符串,包括空格

用户输入的示例:

My name is James.

使用scanf,我必须打印整行,即My name is James.然后我必须得到这个输入字符串的长度并将其存储在一个int变量中.

c

8
推荐指数
1
解决办法
5万
查看次数

scanf中的空间是什么意思?

#include <stdio.h>
int main(int argc, char* argv[]) {
  char c;
  scanf(" %c", &c);
  printf("%c\n", c);
  return 0;
}

[root@test]# ./scanf 
a
a

[root@test]# ./scanf 
 h
h
Run Code Online (Sandbox Code Playgroud)

似乎总是匹配空间是否存在,为什么?

c scanf

8
推荐指数
2
解决办法
8822
查看次数

为什么这段代码过早退出?

    #include <stdio.h>
    #define MAX 5
    int stk[MAX];
    int top=-1;

    main() 
     {
      char ch;
      void push();
      void pop();
     void display();

     do
     {
      printf("1. Push\n");
      printf("2. Pop\n");
      printf("3. Display\n");
      ch=getchar();

         if(ch=='1')
            push();
         if(ch=='2')
            pop();
         if(ch=='3')
            display();

    printf("Do u want to continue y/n"); 
    ch=getchar();
       }while(ch=='y'||ch=='Y');

    }

void push()
 {
   }

void pop()
 {
   }

void display()
 {
   }
Run Code Online (Sandbox Code Playgroud)

我完成推送操作的那一刻...程序打印""你想继续y/n"并退出....不等待用户输入""y/Y"

请帮忙

c stack programming-languages

3
推荐指数
2
解决办法
217
查看次数

scanf() 不接受空格

我需要一个 scanf() 调用来接受空格(没有制表符或换行符,只有' '空格字形)。

char buffer[2048];
scanf(" %2048[0-9a-zA-Z ]s", buffer);
Run Code Online (Sandbox Code Playgroud)

我从这个问题的答案中得到的这个格式说明符:

如何使用 scanf 允许输入空格

虽然它可以很好地接受第一个输入序列,但它会在第一个空白字符所在的位置终止,并带有一个空字符。这是怎么回事?我可能使用了错误的格式吗?

我应该说,我在这里使用 scanf() 是因为安全不是问题;我是唯一会使用这个特定程序的人,而且输入的格式是严格的。

c c++ scanf

3
推荐指数
1
解决办法
2307
查看次数

如何在C中获取空输入或仅ENTER

嗨,我在使用这个简单的 C 代码时遇到了麻烦,因为我对它很陌生。

当我尝试从或获取空值时,如果用户只按 ENTER 而不输入任何内容。尝试了一些变化,但仍然无法正常工作

这段代码如下:

char user_input[17] = {'\0'};
    printf("Type something: ");
    prompt = scanf("%s", user_input);

    if (prompt <= 0) {
      printf("You didn't type anythingt!\n");
      return 1;
      }
Run Code Online (Sandbox Code Playgroud)

还:

char user_input[17] = {'\0'};
    printf("Type something: ");
    scanf("%s", user_input);

    if (user_input[0] == '\0') {
      printf("You didn't type anything!\n");
      return 1;
      }
Run Code Online (Sandbox Code Playgroud)

这个论坛上有很多变化,没有一个对我有用......我错过了什么?

c string input

3
推荐指数
2
解决办法
1万
查看次数

计算整个字符串包括C中的空格

我正在尝试设置一个代码来计算整个字符串,并且在它找到的第一个空格后不会停止.我怎么做?

我试过这种代码,但它只计算第一个单词,然后显示第一个单词中的字母数.

到目前为止,这是我尝试过的.

int main(){
    char get[100];
    int i, space=0, len=0, tot;
    scanf("%s", get);

    for (i=0; get[i]!='\0'; i++)
    {
        if (get[i] == ' ')
            space++;
        else 
            len++;
    }

tot = space + len;
printf("%i", tot);
}
Run Code Online (Sandbox Code Playgroud)

int main(){
    char get[100];
    int len;
    scanf("%s", &get);
    len = strlen(get);
    printf("%i", len);
}
Run Code Online (Sandbox Code Playgroud)

但仍然会得到与第一个相同的答案.

我期待如果输入:狐狸很华丽.输出:19

但我得到的只是输入:狐狸很华丽.输出:3

c

3
推荐指数
1
解决办法
117
查看次数