我是C和编程的新手。我试图制作一个大写程序,但我应该进行Null指针检查和空字符串检查。我怎么能继续?我只想理解这一点。
#include <stdio.h>
#include <stdlib.h>
int *toUpper(char *str)
{
int i;
for (i = 0; i < strlen(str); i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
str[i] = str[i] - 'a' + 'A';
}
}
return str;
}
int main(int argc, char **argv)
{
for (int i = 1; i < argc; ++i)
{
printf(toUpper(argv[i]));
}
}
首先,让我告诉您,如果您不需要格式转换(使用转换说明器),请使用puts()
,而不是printf()
。
也就是说,您需要检查toUpper()
功能的两件事:
-
您需要在访问之前检查传入的参数是否为空指针。您可以检查针对
NULL
的传入指针,例如int *toUpper(char *str){ if (str) { //makes sure `str` is not a NULL pointer // do operation } // else return NULL; //indicate error condition }
-
您需要检查提供的字符串是否没有空。为此,您可以检查第一个元素是否为
NUL
,使用:int *toUpper(char *str){ if (str) { if (str[0] != ' ') // check the first element // do operation } // else return NULL; //indicate error condition }