我需要编写一个读取字符串的程序,并打印出该字符串的二进制ASCII代码。我不知道字符串的长度,我需要在程序的某个地方实现数据结构。我写的源代码是:
#include <stdio.h>
int dec_to_binary(int c, int d);
//initialize data structure for binary value
struct binary{
int value;
};
struct word{
int w_value;
};
int main(){
char wordd[256];
printf("Input a string of characters (no spaces): \n");
//scanf("%s", w);
fgets(wordd, sizeof(wordd), stdin);
printf("You typed: %s", wordd);
int size_word = sizeof(wordd);
struct word w[size_word]; //stores character string
struct binary b[size_word]; //initizalize corresponding binary array for char string inputted by user
int i = 0;
int char_int = 0;
for (i = 0; i < size_word; i++)
{
char_int = w[i].w_value;
b[i].value = dec_to_binary(char_int, size_word); //stores binary value in binary struct array
}
printf("The binary ASCII code for this string is: %d", b);
return 0;
}
int dec_to_binary(int c, int d)
{
int i = 0;
for(i = d; i >= 0; i--){
if((c & (1 << i)) != 0){
return 1;
}else{
return 0;
}
}
}
当我编译它时,我没有收到任何错误,但我的输出不正确:
Input a string of characters (no spaces):
eli
You typed: eli
The binary ASCII code for this string is: 2421936
无论我尝试什么输入,都会得到返回值2421936。关于我哪里出错的任何想法?
答案 0 :(得分:4)
您将b
声明为结构数组,因此如果您打印b
的值,它将为您提供数组的基址。
使用循环打印数组值
您正在使用w
获取二进制值但输入位于wordd[]
中您是否复制了值?
答案 1 :(得分:0)
您需要打印数组中各个条目的值而不是b的值(只打印b的地址,因为b standalone表示指针)
答案 2 :(得分:0)
您尚未初始化@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/view"):
resolver.setSuffix(".jsp");
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
。
请记住,fgets()会将新行字符存储在字符串中,因此最好在继续之前将其删除。做类似的事情:
w