整数数组输出字符串的问题
2010-09-11 18:59
267 查看
#define include <stdio.h>
#define MAXLINE 100
void getline(int s[], int n);
int main(void)
{
int s[MAXLINE];
getline(s, MAXLINE);
printf("%s",s);
return 0;
}
void getline(int s[], int n)
{
int i, c;
for(i=0; i<n-1 && (c=getchar())!=EOF && c!='/n'; i++)
s[i] = c;
if(c == '/n'){
s[i] = c;
++i;
}
s[i] = '/0';
}
输入字符串输出的时候只能打印第一个字符,问题据师哥说是int型字符占四个字节,但是char型只占一个字节,所以用int数组来存储字符的时候会剩余三个字节,并且全部为0。例如0000 0000;0000 0000;0000 0000;0110 0001;表示的其实只是“a“这个字符。当用字符串的形式打印的时候是倒序打印的,即先打印0110 0001这个字节,打印出”a“,然后在打印倒数第二个字节0000 0000;正好是字符‘/0',是字符串的终止符,所以就不再继续打印了,就出现了只打印第一个字符的情况。
如果把上面的数组换成char型就没有问题了。
具体为何倒序打印还不是很清楚,待以后查证
这里有个程序可以证明是倒序打印的:
int main(void)
{
int a[2]={25185}
printf("%s、n",a);
}
25185用二进制表示为0000 0000;0000 0000;0110 0010;0110 0001;可以发现最后一个字节0110 0001正好是十进制97,是字符”a“,倒数第二个字节0110 0010则是字符”b“的表示形式。打印结果为
#define MAXLINE 100
void getline(int s[], int n);
int main(void)
{
int s[MAXLINE];
getline(s, MAXLINE);
printf("%s",s);
return 0;
}
void getline(int s[], int n)
{
int i, c;
for(i=0; i<n-1 && (c=getchar())!=EOF && c!='/n'; i++)
s[i] = c;
if(c == '/n'){
s[i] = c;
++i;
}
s[i] = '/0';
}
输入字符串输出的时候只能打印第一个字符,问题据师哥说是int型字符占四个字节,但是char型只占一个字节,所以用int数组来存储字符的时候会剩余三个字节,并且全部为0。例如0000 0000;0000 0000;0000 0000;0110 0001;表示的其实只是“a“这个字符。当用字符串的形式打印的时候是倒序打印的,即先打印0110 0001这个字节,打印出”a“,然后在打印倒数第二个字节0000 0000;正好是字符‘/0',是字符串的终止符,所以就不再继续打印了,就出现了只打印第一个字符的情况。
如果把上面的数组换成char型就没有问题了。
具体为何倒序打印还不是很清楚,待以后查证
这里有个程序可以证明是倒序打印的:
int main(void)
{
int a[2]={25185}
printf("%s、n",a);
}
25185用二进制表示为0000 0000;0000 0000;0110 0010;0110 0001;可以发现最后一个字节0110 0001正好是十进制97,是字符”a“,倒数第二个字节0110 0010则是字符”b“的表示形式。打印结果为
相关文章推荐
- 输入字符串,内有数字和非字符数组,例如A123x456将其中连续的数字作为一个整数,依次存放到一个数组中,如123放到a[0],456放到a[1],并输出a这些数
- C 输入一个字符串,将其中连续的数字作为一个整数存到一数组中,统计整数个数并输出这些整数
- cout 输出字符串数组和其他数组时的问题
- 反序输出正整数和求数组交集的问题
- C输入一个字符串,将其中连续的数字做为一个整数存放在一个整形数组中,统计其中数字的个数并输出这些整数。
- 将整形整数转化为数组的形式分别依次存到数组当中,然后倒叙输出、把原本字符串倒序输出。截取字符串等等
- 输入一个字符串内有数字和非数字字符,将连续的数字作为一个整数,存到数组a中,统计整数的个数,并输出这些数
- 输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一数组a中。统计共有多少个整数,并输出这些数。
- 问题:利用输入输出流重载实现一个整数数组的输入和输出。 要求:输入一个数组大小 及 所有元素的值,排序后输出该数组的所有元素。
- 关于结构体里面的字符串指针输出出现乱码的问题与结构体数组作为参数传值的问题
- 习题 8.16 输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一数组a中。统计共有多少个整数,并输出这些数。
- [乐意黎原创]PHP里由于数组编码导致json_encode输出为空白问题的解决方法
- 定义一个结构体变量(包括年、月、日),编写程序,要求输入年月日,程序能够计算并输出改日是本年中的第几天。注意闰年问题。(数组)
- 排序,求几个最值问题,输入n个整数,输出其中最小的k个元素。
- 输入一行整数,转化为字符串形式输出
- 利用指针输出数组时发现一个问题,还请指教
- 传入sql数组字符串,输出table
- 主题:Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- 字符串指针和字符数组的诡异问题
- SpringMVC使用@ResponseBody输出字符串时遇到的乱码问题及解决办法