fgets stdin和pipe字符的奇怪行为

时间:2016-05-14 10:51:11

标签: c stdin fgets

我正在尝试在stdin上读取一些带有fgets的文本,但是有一种我不理解的奇怪行为。

这是一个简单的代码:

public int searchContactName(String name){

    int foundIndex =-1;
    for(int i = 0; i < contacts.size(); i++){
        if(contacts.get(i).getName().equals(name)){
            foundIndex = i;
        }
    }

    return foundIndex;
}

这是我测试时的输出:

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

int main(int argc, char **argv) {
    char chaine[30];
    int i;

    fgets(chaine, sizeof(chaine), stdin);
    printf("%s", chaine);

    for(i=0; i<strlen(chaine); i++) {
        printf("%d[%c][%u]\n", i, chaine[i], chaine[i]);
    }
}

但它并不是一直发生..字符串的printf是好的,但是逐个字符,这个东西看起来像溢出。

它只发生在管道和空格字符中。空间角色转化为这两个?字符。

我正在使用macosx终端。

有没有人见过这种行为?

感谢您的帮助,

0 个答案:

没有答案