[英]Segmentation fault (core dumped) error for C program
我正在尝试在在线C编译器中的程序下面运行。 但是我得到细分错误。 你能帮我解决这个问题吗
#include <stdio.h>
#include <string.h>
int main()
{
char string[15] = "Strlwr in C";
printf("%s",tolower(string));
return 0;
}
以下是tolower
的原型
int tolower(int c);
您应该传递一个int
或可以安全地转换为int
类似char
东西。 像您一样传递char *
( string
类型)会导致UB。
要将字符串转换为小写,需要分别转换每个字符。 一种方法是:
char string[15] = "Strlwr in C";
char lstr[15];
int i = 0;
do {
lstr[i] = tolower(string[i]);
} while(lstr[i] != '\0');
printf("%s", lstr);
您使用的tolower
错误。 该函数返回int
并获取int
作为参数(这是声明: int tolower(int c);
)。 您要做的是在char array
每个char
上调用它,并打印每个:
char string[15] = "Strlwr in C";
for(int i = 0; i < strlen(string); i++)
printf("%c",tolower(string[i]));
阅读cplusplus.com/reference/cctype/tolower它使用单个int作为参数,而不是char和array。
您可能想在“字符串”上使用一个循环,该循环依次处理每个循环。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
int i;
char string[15] = "Strlwr in C";
for (i=0; i< sizeof(string)/sizeof(char); i++)
{
string[i]=(char)(tolower((int)string[i]));
}
printf("%s\n",string);
return 0;
}
输出:
strlwr in c
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.