将字符串的单个字符转换为一行中的ASCII值,C

时间:2016-05-24 20:52:50

标签: c

请记住,我是一个完全的初学者,我仍然适应编程词汇。

当我从visual studio运行调试时,命令提示符出现“输入任何字符串:”但是当我输入内容时,我得到“Exception thrown blah blah blah blah”。出了什么问题?非常感谢任何帮助和批评。我现在已经失去了4个小时的思绪。

继承我的代码:

Math.round()

2 个答案:

答案 0 :(得分:1)

scanf_s()函数必须与第三个参数一起使用,以指示字符串的最大长度,即scanf_s("%s", str, 100);

BTW scanf_s()特定于Microsoft Visual Studio,因此它不太便于携带,所以我不推荐它,str不是一个非常好的变量名

答案 1 :(得分:0)

发布的代码是:

  1. 不便携
  2. 包含'magic'(不是价值基础)数字
  3. 将变量def response = messageExchange.getResponseContent() def xml = new XmlSlurper().parseText(response) def invoiceNumber= xml.'**'.findAll { it.name() == 'Number'} log.info "$invoiceNumber" assert invoiceNumber.contains(1) 声明远离其'usage
  4. 不会输入过'空格'字符
  5. 以下代码可以纠正这些问题,检查错误并干净地编译

    i

    注意:上面的代码将输入换行符并打印出来(在Linux上为10)你可能想用一些东西来消除换行符,所以在调用#include <stdio.h> // scanf(), printf(), perror() #include <stdlib.h> // exit(), EXIT_FAILURE #define MAX_STR_LEN (100) int main( void ) { char str[ MAX_STR_LEN ]; printf("Enter any string: "); if( NULL == fgets( str, sizeof(str), stdin )) { perror( "fgets failed" ); exit( EXIT_FAILURE ); } // implied else, scanf successful printf("ASCII values of each characters of given string: "); for( size_t i=0; str[i]; i++ ) printf("%d ",str[i]); return 0; } 后立即插入以下内容:

    fgets()

    这种消除换行符的方法意味着代码也需要:

    char *newline = NULL;
    if( NULL != ( newline = strstr( str, "\n" ) ) )
    { // carriage return found
        *newline = '\0';
    }