此C代码出错

时间:2018-06-11 06:32:02

标签: c

$(document).ready(function () {
    var url = window.location.pathname.split("/"),
    htmlFile = url[url.length-1];
    if(htmlFile.includes(".html")){
        $('.nav-link').removeClass('active');
        $('.nav-link[href="last_part"]').addClass('active');
    }
    else {
         $('.nav-link').removeClass('active')
         $('.nav-link').first().addClass('active');
    }
});

我正在运行此代码。我已进入" Jagrit"作为输入。我希望上面的节目输出是' j'。但相反,我得到的只是一个空白区域。任何人都可以告诉我为什么会这样,代码中的错误是什么?

5 个答案:

答案 0 :(得分:0)

scanf期望memrory的地址写入以读取数据:

#include <stdio.h>
int main(void) {
     char str[100]; 
     scanf("%s", str); 
     printf("%c",str[0]); 
     return 0; 
}

请查看scanfthis doc的示例部分。

您对scanf("%s", "jargrit dolir")的意图是什么?

答案 1 :(得分:0)

这个

scanf("%s","jagrit dolir");/*it doesn't put data into str, and doing that causes UB*/

因此访问str[0]可能会导致未定义的行为,因为str未初始化&amp;它没有任何数据。

而是使用如下。

scanf("%s",str);/* now give input like  jagrit dolir */

然后打印str[0]

编辑: - ,因为您修改了代码。您是否阅读了scanf()的手册页?

scanf("%s",str[0]);/* why you are not reading compiler warning here ?*/

此处%s需要char*的参数,但您提供了char类型。

答案 2 :(得分:0)

如果您只想将输入作为字符串可以使用fgets() 并只使用str [0]打印字符串的第一个字符 注意 printf()仅用于打印值; 这是代码的简单版本:

#include <stdio.h>
# include<stdlib.h>

int main() {
    char str[100];
    fgets(str,100,stdin);
    printf("%c",str[0]);

    return 0;
}

答案 3 :(得分:0)

在使用str [0]时,访问它的值,因此scanf应该像scanf("%s",&str[0]);scanf("%s",str);这样 您还应该期望输出为'a'

答案 4 :(得分:-2)

试试这段代码

#include <stdio.h>

int main()
{
    char str[100];
    printf("%s","jagrit dolir");
    printf("%c",str[0]);        
    return 0;
}