这个程序应该通过从他们的ascii值中减去97(输入应该是小写,因为ascii的值为97)来将字符串(字符串)数组转换为一个整数的数组。所以,如果我输入字符串abcd我应该得到0123,但我不知何故得到这个:012134513789.我不知道问题在哪里。这会将char数组转换为int数组无效吗?
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
void userEnter(int*pattern, int n);
int main(void)
{
int n, i;
printf("What is the length of the array: ");
scanf("%d",&n);
int pattern[n];
printf("Enter the char array: ");
userEnter(pattern, n);
printf("The int array is: ");
for(i=0;i<n;i++)
{
printf("%d",pattern[i]);
}
printf("\n");
}
void userEnter(int*pattern, int n)
{
char input[n];
scanf("%s", input);
int i;
for(i = 0; i < n-1; i++)
{
pattern[i] = input[i]-97;
}
}
请使用有效的语法并正确缩进您的代码。 –
'scanf(“%s”,输入)''有一个等待缓冲区溢出;',如果输入超过n-1个字符,可以通过在'main'中覆盖'n'来产生这样的输出。如果你永远不会输入超过n-1个字符,它应该工作,并在这里做。 –