我的项目是用小写字母创建我的名字,姓氏和学生ID的源字符串,并将它们分开打印出来,我名字的第一个字母将大写。我查看了许多示例代码,但无法弄清楚这一点。此外,我的学生ID应该打印为数字而不是字符串。不确定这甚至意味着什么。以下是我到目前为止的情况:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main (void)
{
char str[] = "david house n966898";
char f_name[6], l_name[6], st_id[8];
strcpy(f_name, strtok(str, " "));
strcpy(l_name, strtok(NULL, " "));
strcpy(st_id, strtok(NULL, " "));
printf("First Name: %s\n", f_name);
printf("Last Name: %s\n", l_name);
printf("Student ID: %s\n", st_id);
return 0;
}
请帮助!
答案 0 :(得分:4)
您可以致电toupper(int)
以使一个字符大写;并且您可以使用atoi(const char *)
来解析学生ID。像
printf("First Name: %c%s\n", toupper(f_name[0]), f_name + 1);
printf("Last Name: %c%s\n", toupper(l_name[0]), l_name + 1);
printf("Student ID: %i\n", atoi(st_id + 1));
输出(没有其他变化)
First Name: David
Last Name: House
Student ID: 966898
答案 1 :(得分:3)
使用array-operator []访问第一个字母。 使用ANSI-C函数toupper()转换为大写。
f_name[0] = toupper(f_name[0]);
使用%d占位符打印出一个数字。 将字符串转换为数字是通过ANSI-C函数atoi()完成的。
printf("Id: %d\n", atoi( st_id ) );
您应该阅读https://en.wikipedia.org/wiki/The_C_Programming_Language以更好地了解C。
答案 2 :(得分:3)
$ apropos upper
toupper (3) - convert letter to upper or lower case
toupper (3p) - transliterate lowercase characters to uppercase
towlower (3p) - transliterate uppercase wide-character code to lowercase
towupper (3) - convert a wide character to uppercase
towupper (3p) - transliterate lowercase wide-character code to uppercase
$ man toupper
NAME
toupper, tolower - convert letter to upper or lower case
SYNOPSIS
#include <ctype.h>
int toupper(int c);
int tolower(int c);
DESCRIPTION
toupper() converts the letter c to upper case, if possible.
tolower() converts the letter c to lower case, if possible.
If c is not an unsigned char value, or EOF, the behavior
of these functions is undefined.
答案 3 :(得分:0)
在某些情况下,有助于理解传统的ASCII:
‘A’ = 0x41 = 0100 0001B
‘a’ = 0x61 = 0110 0001B
Lower to upper: c & 1101 1111
Upper to lower: c | 0010 0000
在ASCII中转换上下字符是掩码单个位的问题。当它是字符数组的第一个字符时,只需取消引用指向数组的指针并对其进行掩码。
*c & 0xDF; // to upper - some may consider bad form!
不需要任何库,任何包含文件,并且它非常快。也不会被认为是非常便携的,所以只能用于考虑。
另请注意,大写或小写的低五位开始将字母数字设为1,这样就可以了解数字和字母之间其他快速简便的转换。