问题描述
这是我的代码。
#include<stdio.h>
#include<string.h>
int main()
{
int n,i;
char ch[100];
scanf("%d",&n);
for(i = 0; i < n; i++){
scanf(" %c",&ch[i]);
}
printf("%s\n",strupr(ch));
return 0;
}
首先,我想在n变量中使用字符数组的大小。之后,我要使用n个字符并分配数组。来自该程序的输出是正确的,但它也会产生一些垃圾值。
例如:
5
s d g h f
Output: SDGHFC└U▄■`
解决方法
在读取字符时,您在输入中提供的空格也将被视为字符,并且strupr(c)会产生一些毛毛的输出,此外,您还必须在字符数组的末尾手动提供空字符。下面的程序可能会帮助您找到答案
#include<stdio.h>
#include<string.h>
int main()
{
int n,i;
scanf("%d",&n);
fflush(stdin);
char ch[100];
for(i = 0; i < n; i++){
char temp;
scanf("%c",&temp);
if(temp != '\n')
ch[i] = temp;
else
break;
}
ch[n] = '\0';
printf("%s\n",strupr(ch));
return 0;
}
您的输入应类似于
5
sdghf
使用空格输入。程序将如下所示。
#include<stdio.h>
#include<string.h>
int main()
{
int n,&n);
fflush(stdin);
char ch[100];
char temp;
i = 0;
while(scanf("%c",&temp)){
if(temp == ' ')
continue;
if(temp != '\n')
ch[i++] = temp;
else
break;
}
ch[i] = '\0';
printf("%s\n",strupr(ch));
return 0;
}
现在,您可以根据需要安排角色。
,只需将数组ch []初始化为全零。 I.E。
for (i = 0; i < 100; i += 1) { ch[i] = '\0'; }
在声明ch []之后放置此行。