我正在尝试在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终端。
有没有人见过这种行为?
感谢您的帮助,