C 将取自用户的大写字母放入数组
在这段代码中,我试图从用户那里获取一个字符串,并将大写字母放入另一个数组中,然后打印它。但我做了一些可怕的错误,我可以告诉,有人能帮我这个代码吗C 将取自用户的大写字母放入数组,c,char,c-strings,uppercase,letter,C,Char,C Strings,Uppercase,Letter,在这段代码中,我试图从用户那里获取一个字符串,并将大写字母放入另一个数组中,然后打印它。但我做了一些可怕的错误,我可以告诉,有人能帮我这个代码吗 #include<string.h> int main() { char arr[100],uppercaseletters[50]; printf("Enter array:"); scanf("%s",arr); strlen(arr); printf("The lenght of string is:
#include<string.h>
int main() {
char arr[100],uppercaseletters[50];
printf("Enter array:");
scanf("%s",arr);
strlen(arr);
printf("The lenght of string is: %d\n",strlen(arr));
for(int i=0;i<=strlen(arr);i++){
if(arr[i]>='A' && arr[i]<='Z'){
arr[i]+=uppercaseletters[50];
printf("%s",uppercaseletters);
}
}
}
#包括
int main(){
字符arr[100],大写字母[50];
printf(“输入数组:”);
scanf(“%s”,arr);
斯特伦(arr);
printf(“字符串长度为:%d\n”,strlen(arr));
对于(int i=0;i='A'&&arr[i]
arr[i]+=大写字母[50]
这是错误的。您要将大写字母添加到新数组中,然后使用单独的索引,例如j:
int j = 0;
int len = strlen(arr);
for (int i = 0; i < len-1; i++)
{
if (arr[i] >= 'A' && arr[i] <= 'Z')
{
// arr[i]+=uppercaseletters[50];
if(j < 49)
{
uppercaseletters[j++] = arr[i];
}
}
}
uppercaseletters[j] = '\0';
printf("%s", uppercaseletters);
intj=0;
int len=strlen(arr);
对于(int i=0;i 根据C标准,如果(arr[i]>='A'&&arr[i]用于启动器,则不带参数的主功能应声明如下
int main( void )
不清楚为什么数组大写字母
的元素少于数组arr
char arr[100],uppercaseletters[50];
用户可以输入仅由大写字符组成的字符串
此声明
strlen(arr);
arr[i]+=uppercaseletters[50];
printf("%s",uppercaseletters);
没有效果
此声明
strlen(arr);
arr[i]+=uppercaseletters[50];
printf("%s",uppercaseletters);
没有意义。您必须填充数组大写字母
。而且元素大写字母[50]
不存在,因为索引的有效范围是[0,50)
在这份声明中
strlen(arr);
arr[i]+=uppercaseletters[50];
printf("%s",uppercaseletters);
您正在尝试输出未初始化的数组
程序可以按以下方式运行
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
enum { N = 100 };
char s[N];
printf( "Enter a string: " );
fgets( s, sizeof( s ), stdin );
size_t n = 0;
for ( size_t i = 0; s[i] != '\0'; i++ )
{
if ( isupper( ( unsigned char )s[i] ) ) ++n;
}
char *upper_case_letters = malloc( n + 1 );
n = 0;
for ( size_t i = 0; s[i] != '\0'; i++ )
{
if ( isupper( ( unsigned char )s[i] ) )
{
upper_case_letters[n++] = s[i];
}
}
upper_case_letters[n] = '\0';
puts( upper_case_letters );
free( upper_case_letters );
return 0;
}
#include <stdio.h>
#include <ctype.h>
int main(void)
{
enum { N = 100 };
char s[N];
char upper_case_letters[N];
printf( "Enter a string: " );
fgets( s, sizeof( s ), stdin );
size_t n = 0;
for ( size_t i = 0; s[i] != '\0'; i++ )
{
if ( isupper( ( unsigned char )s[i] ) )
{
upper_case_letters[n++] = s[i];
}
}
upper_case_letters[n] = '\0';
puts( upper_case_letters );
return 0;
}
在不动态分配大写字母数组的情况下,程序可以按如下方式运行
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
enum { N = 100 };
char s[N];
printf( "Enter a string: " );
fgets( s, sizeof( s ), stdin );
size_t n = 0;
for ( size_t i = 0; s[i] != '\0'; i++ )
{
if ( isupper( ( unsigned char )s[i] ) ) ++n;
}
char *upper_case_letters = malloc( n + 1 );
n = 0;
for ( size_t i = 0; s[i] != '\0'; i++ )
{
if ( isupper( ( unsigned char )s[i] ) )
{
upper_case_letters[n++] = s[i];
}
}
upper_case_letters[n] = '\0';
puts( upper_case_letters );
free( upper_case_letters );
return 0;
}
#include <stdio.h>
#include <ctype.h>
int main(void)
{
enum { N = 100 };
char s[N];
char upper_case_letters[N];
printf( "Enter a string: " );
fgets( s, sizeof( s ), stdin );
size_t n = 0;
for ( size_t i = 0; s[i] != '\0'; i++ )
{
if ( isupper( ( unsigned char )s[i] ) )
{
upper_case_letters[n++] = s[i];
}
}
upper_case_letters[n] = '\0';
puts( upper_case_letters );
return 0;
}
#包括
#包括
内部主(空)
{
枚举{N=100};
chars[N];
字符大写字母[N];
printf(“输入字符串:”);
fgets(s、sizeof(s)、stdin);
尺寸n=0;
对于(大小i=0;s[i]!='\0';i++)
{
if(isupper((无符号字符)s[i]))
{
大写字母[n++]=s[i];
}
}
大写字母[n]='\0';
puts(大写字母);
返回0;
}
我们将从用户那里获得一个系列,我们将把a-Z大写字母扔到另一个系列,并在屏幕上打印出来
事实上,它的逻辑非常简单。在使用“for”循环导航数组中的项时,如果A-Z检测到字母,它会将其分配给新数组
1) 让我们添加标准输入/输出库并添加初始函数:
#include <stdio.h>
int main()
{
3) 让我们从用户处获取阵列:
printf("Enter array: ");
scanf("%s",&arr);
4) 让我们创建循环,首先返回“i=0”和数组中的项数
数组中的项数可以通过-strlen或-arr[i]!='\0'找到
for(i=0;arr[i]!='\0';i++)
{
5) 让我们将条件添加到循环中。
如果“i”元素大于A小于Z,则将其添加到另一个数组中
if(arr[i]>='A'&& arr[i]<='Z')
{
uppercaseletters[j++] = arr[i];
//The reason we do 'j++' is to add to the 0th element of the array at first and it will be 'j = 1', then it will add to the 1st element and it will continue as 'j = 2'.
}
}
if(arr[i]>='A'&&arr[i]arr[i]+=大写字母[50]
这是什么怪事?我正在努力学习xD@PabloI即使假设你的代码是正确的,想想看:如果用户输入一个超过50个大写字符的字符串会发生什么情况?…而将strlen
放在for
的中是一个巨大的性能打击…@Pablo听起来像是在经历一场灾难正式代码审查;)谢谢Mate我不认为有必要在这里使用malloc
,您可以声明char大写字母[N]
。除此之外,还有很好的解释。