c语言编程(不能用gets库函数)

如题所述

使用最基本的算法,简单明了,看代码:

#include <stdio.h>

#define MAX_LENGTH ( 80 )

int main(void) {

unsigned long num = 0l;
int n = 0;
char str[MAX_LENGTH+1];
char *pStr;
char ch = '#';

printf("请输入: ");
/*
 *   输入
 */
while ( ch != '\n' && ch != '\r' && n < MAX_LENGTH ) {

ch = getchar();
str[n++] = ch;
}
str[n] = '\0';
pStr = str;
/*
 *  提取数字
 */
while ( *pStr != '\0' ) {

if ( *pStr >= '0' && *pStr <= '9' ) {

num = ( num * 10l ) + (long)( ( *pStr ) - '0' );
}
pStr++;
}
printf("%ld\n", num);
return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-05-04

以下是c语言的代码,有什么问题可以追问。

代码如下:

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

int main()
{
    char buf[80];
    int i;
    unsigned long num = 0;

    // 输入字符串
    scanf("%s", buf);

    // 循环提取字符串中的数字字符,转换到数值
    for (i=0; i<strlen(buf); i++)
    {
        if (buf[i] >= '0' && buf[i] <= '9')
        {
            num = num * 10 + (buf[i] - '0');
        }
    }

    // 输出转换后的数值结果
    printf("%ld\n", num);
}

本代码原理是循环检查字符串中的数字字符,发现数字字符就将num乘以10让num进一位,然后加上该字符的值,非ascii码值,让它为个位。循环直至结束,num即是所要的结果。

第2个回答  2019-05-04
#include "stdafx.h"
#include <iostream>

#include<iostream>

int main() {

char input[80] = {0};
char getint[80] = {0};

printf("请输入一段包含数字的字符串:");
scanf("%s", &input);

int count = strlen(input);
int g = 0;
for (int i = 0; i < count; i++)
{
int t = (int)(input[i] - '0');

if ( t >= 0 &&  t <= 9 )
{
printf( "%d, ",t);
getint[g] = (char)( t + '0');
g++;
}
}
getint[g + 1] = '\0';

//printf("\n%s", getint );

long inputNum = atol( (const char *) getint );

printf("\n输入的数字组合为:%ld", inputNum );

return 0;
}

第3个回答  2019-05-04

使用scanf函数接收字符串的输入,再遍历字符提取出整数放入另一个字符数组中。最后调用atol函数把提取出的字符串转换为整数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
 char str[80]={0};
 char ints[80]={0};
 scanf("%s",str);
 int i,j,len=strlen(str);
 for(i=0,j=0;i<len;i++){
  if(str[i]>='0'&&str[i]<='9'){
   ints[j]=str[i];
   j++;
  }
 }
 printf("%ld\n",atol(ints));
 return 0;
}

c语言中实现gets的功能,但不用gets这条语句
可以用scanf()实现。具体如下:scanf()所在头文件:stdio.h 语法:scanf("格式控制字符串",变量地址列表);接受字符串时:scanf("%s",字符数组名或指针);

c语言gets函数
C语言中gets函数已被弃用,建议使用fgets函数。详细解释如下:1. gets函数简介 gets函数是C语言中的一个标准输入函数,用于从标准输入读取一行数据,并存储在指定的字符数组中。其函数原型为:char *gets。然而,由于gets函数在处理输入时存在缓冲区溢出风险,因此在C语言中已被弃用。2. gets函数的问题 g...

c语言编程问题(不能用itoe和gets库函数)
这个问题其实就是对字符的操作,首先判断输入的字符串长度是否为4的倍数,如果不是那么就可以判读No了,如果是在分别去四个字符去判断是否是2019,然后就完了。代码如下:include <stdio.h>#include <string.h>#define MAX_LENGTH ( 80 )void my_strncpy(char *dest, char const *src) {int size ...

c语言的gets函数编译不成功阿,很短的程序?
C语言的gets函数一般包含在stdio.h头文件里,如果没有包含比头文件那可能会有问题。第二种情况包含了还出问题,说明你的编译器已经不支持这个函数了,这个函数非常不安全,容易造成溢出,建议换成fgets函数。函数原型:char *fgets(char *buf, int bufsize, FILE *fp);参数解释:参数一是输入字符串...

C语言编译器用不了scanf();gets()之类的函数,是怎么回事啊。。。 一点...
可能你的编译器被病毒感染。我推荐你使用C-free编译器,支持C\/C++

用C语言编写一道程序,求输入字符串的长度,且不能用strlength函数
\/* 这个应该是32位机上最高效的比较方法, 一次性比较4个字符(32位), VS2008的库函数strlen使用的就是这种计算方法 *\/ int stringLen ( char *s ){ int *p;int read;int test;p = (int*)s;read = 0;while ( !(read & 0x81010100 )){ read = *p++;test = 0x7efefeff + read;r...

为什么在c语言中使用gets函数是危险的
gets() 函数从标准输入读入 一行文本,直到读到 新行符 或 EOF 字符 之前,不会停止读入文本。也就是:gets() 不检查边界。因此,当变量空间 小于 一行字符串 时, 使用 gets() 会造成 溢出,程序出错。例如:include<stdio.h> int main( ){ char s[5];printf ("input one line: ");...

C语言,gets突然不能用了,
source_name后面多了一个右括号。

C语言中gets怎么用不了
include<stdio.h> static char buff[256];static char string="abcdef";int main(){ printf("Please input a string:");gets(buff);\/\/buff 才是用来存储字符串的,string 已经指向字符串常量,而常量是不能被修改的 printf("\\nYou string is :s\\n",buff);\/\/你输入的字符串在buff数组中 re...

c语言:如图,请问一下哪里出错了?
首先解答一下这个C语言代码出错的原因:第一个gets未定义:出现这个错误一般是没有包含相应的头文件,或者库里没有这个函数。这里应该是没有这个函数。gets(char *dest)是一个老的库函数,采用这个函数存在越界的安全隐患。它只有一个参数,如果输入的字符个数超过dest内存空间,程序可能失败,也可能被黑客...

相似回答