Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0353801

Browse files
Add project files.
1 parent a9ee44b commit 0353801

File tree

4 files changed

+292
-0
lines changed

4 files changed

+292
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.9.34723.18
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "C String Generator Using Pointers", "C String Generator Using Pointers.vcxproj", "{0AD4A05C-D1EC-4B9A-B225-D519177727EC}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|x64 = Debug|x64
11+
Debug|x86 = Debug|x86
12+
Release|x64 = Release|x64
13+
Release|x86 = Release|x86
14+
EndGlobalSection
15+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
16+
{0AD4A05C-D1EC-4B9A-B225-D519177727EC}.Debug|x64.ActiveCfg = Debug|x64
17+
{0AD4A05C-D1EC-4B9A-B225-D519177727EC}.Debug|x64.Build.0 = Debug|x64
18+
{0AD4A05C-D1EC-4B9A-B225-D519177727EC}.Debug|x86.ActiveCfg = Debug|Win32
19+
{0AD4A05C-D1EC-4B9A-B225-D519177727EC}.Debug|x86.Build.0 = Debug|Win32
20+
{0AD4A05C-D1EC-4B9A-B225-D519177727EC}.Release|x64.ActiveCfg = Release|x64
21+
{0AD4A05C-D1EC-4B9A-B225-D519177727EC}.Release|x64.Build.0 = Release|x64
22+
{0AD4A05C-D1EC-4B9A-B225-D519177727EC}.Release|x86.ActiveCfg = Release|Win32
23+
{0AD4A05C-D1EC-4B9A-B225-D519177727EC}.Release|x86.Build.0 = Release|Win32
24+
EndGlobalSection
25+
GlobalSection(SolutionProperties) = preSolution
26+
HideSolutionNode = FALSE
27+
EndGlobalSection
28+
GlobalSection(ExtensibilityGlobals) = postSolution
29+
SolutionGuid = {E38798E3-E9C0-4B75-84D6-EAC44F480940}
30+
EndGlobalSection
31+
EndGlobal
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|Win32">
5+
<Configuration>Debug</Configuration>
6+
<Platform>Win32</Platform>
7+
</ProjectConfiguration>
8+
<ProjectConfiguration Include="Release|Win32">
9+
<Configuration>Release</Configuration>
10+
<Platform>Win32</Platform>
11+
</ProjectConfiguration>
12+
<ProjectConfiguration Include="Debug|x64">
13+
<Configuration>Debug</Configuration>
14+
<Platform>x64</Platform>
15+
</ProjectConfiguration>
16+
<ProjectConfiguration Include="Release|x64">
17+
<Configuration>Release</Configuration>
18+
<Platform>x64</Platform>
19+
</ProjectConfiguration>
20+
</ItemGroup>
21+
<PropertyGroup Label="Globals">
22+
<VCProjectVersion>17.0</VCProjectVersion>
23+
<Keyword>Win32Proj</Keyword>
24+
<ProjectGuid>{0ad4a05c-d1ec-4b9a-b225-d519177727ec}</ProjectGuid>
25+
<RootNamespace>CStringGeneratorUsingPointers</RootNamespace>
26+
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
27+
</PropertyGroup>
28+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
29+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
30+
<ConfigurationType>Application</ConfigurationType>
31+
<UseDebugLibraries>true</UseDebugLibraries>
32+
<PlatformToolset>v143</PlatformToolset>
33+
<CharacterSet>Unicode</CharacterSet>
34+
</PropertyGroup>
35+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
36+
<ConfigurationType>Application</ConfigurationType>
37+
<UseDebugLibraries>false</UseDebugLibraries>
38+
<PlatformToolset>v143</PlatformToolset>
39+
<WholeProgramOptimization>true</WholeProgramOptimization>
40+
<CharacterSet>Unicode</CharacterSet>
41+
</PropertyGroup>
42+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
43+
<ConfigurationType>Application</ConfigurationType>
44+
<UseDebugLibraries>true</UseDebugLibraries>
45+
<PlatformToolset>v143</PlatformToolset>
46+
<CharacterSet>Unicode</CharacterSet>
47+
</PropertyGroup>
48+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
49+
<ConfigurationType>Application</ConfigurationType>
50+
<UseDebugLibraries>false</UseDebugLibraries>
51+
<PlatformToolset>v143</PlatformToolset>
52+
<WholeProgramOptimization>true</WholeProgramOptimization>
53+
<CharacterSet>Unicode</CharacterSet>
54+
</PropertyGroup>
55+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
56+
<ImportGroup Label="ExtensionSettings">
57+
</ImportGroup>
58+
<ImportGroup Label="Shared">
59+
</ImportGroup>
60+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
61+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62+
</ImportGroup>
63+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
64+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
65+
</ImportGroup>
66+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
67+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
68+
</ImportGroup>
69+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
70+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
71+
</ImportGroup>
72+
<PropertyGroup Label="UserMacros" />
73+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
74+
<ClCompile>
75+
<WarningLevel>Level3</WarningLevel>
76+
<SDLCheck>true</SDLCheck>
77+
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
78+
<ConformanceMode>true</ConformanceMode>
79+
</ClCompile>
80+
<Link>
81+
<SubSystem>Console</SubSystem>
82+
<GenerateDebugInformation>true</GenerateDebugInformation>
83+
</Link>
84+
</ItemDefinitionGroup>
85+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
86+
<ClCompile>
87+
<WarningLevel>Level3</WarningLevel>
88+
<FunctionLevelLinking>true</FunctionLevelLinking>
89+
<IntrinsicFunctions>true</IntrinsicFunctions>
90+
<SDLCheck>true</SDLCheck>
91+
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
92+
<ConformanceMode>true</ConformanceMode>
93+
</ClCompile>
94+
<Link>
95+
<SubSystem>Console</SubSystem>
96+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
97+
<OptimizeReferences>true</OptimizeReferences>
98+
<GenerateDebugInformation>true</GenerateDebugInformation>
99+
</Link>
100+
</ItemDefinitionGroup>
101+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
102+
<ClCompile>
103+
<WarningLevel>Level3</WarningLevel>
104+
<SDLCheck>true</SDLCheck>
105+
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
106+
<ConformanceMode>true</ConformanceMode>
107+
</ClCompile>
108+
<Link>
109+
<SubSystem>Console</SubSystem>
110+
<GenerateDebugInformation>true</GenerateDebugInformation>
111+
</Link>
112+
</ItemDefinitionGroup>
113+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
114+
<ClCompile>
115+
<WarningLevel>Level3</WarningLevel>
116+
<FunctionLevelLinking>true</FunctionLevelLinking>
117+
<IntrinsicFunctions>true</IntrinsicFunctions>
118+
<SDLCheck>true</SDLCheck>
119+
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
120+
<ConformanceMode>true</ConformanceMode>
121+
</ClCompile>
122+
<Link>
123+
<SubSystem>Console</SubSystem>
124+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
125+
<OptimizeReferences>true</OptimizeReferences>
126+
<GenerateDebugInformation>true</GenerateDebugInformation>
127+
</Link>
128+
</ItemDefinitionGroup>
129+
<ItemGroup>
130+
<ClCompile Include="Source.c" />
131+
</ItemGroup>
132+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
133+
<ImportGroup Label="ExtensionTargets">
134+
</ImportGroup>
135+
</Project>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup>
4+
<Filter Include="Source Files">
5+
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6+
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7+
</Filter>
8+
<Filter Include="Header Files">
9+
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10+
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
11+
</Filter>
12+
<Filter Include="Resource Files">
13+
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14+
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15+
</Filter>
16+
</ItemGroup>
17+
<ItemGroup>
18+
<ClCompile Include="Source.c">
19+
<Filter>Source Files</Filter>
20+
</ClCompile>
21+
</ItemGroup>
22+
</Project>

‎Source.c‎

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
#define _CRT_SECURE_NO_WARNINGS /* disable security warnings in Microsoft Visual Studio*/
2+
#include <stdio.h>
3+
#include <stdlib.h>
4+
5+
#define S1LENGTH 40
6+
#define S2LENGTHMIN 2
7+
#define S2LENGTHMAX 20
8+
9+
char* generateS1(void);
10+
char* generateS2(void);
11+
12+
int isUpperCaseLetter(int iochar);
13+
14+
int main(void) {
15+
char* s1 = generateS1();
16+
return 0;
17+
}
18+
19+
char* generateS1(void) {
20+
char s1[S1LENGTH + 1];
21+
int rand_num;
22+
char rand_char;
23+
24+
for (int i = 0; i < S1LENGTH; ++i) {
25+
/* Generate random number between 1 and 26 */
26+
rand_num = rand() % 26;
27+
28+
/* Shift the range to 65-90 and cast to char */
29+
rand_char = (char)(rand_num + 65);
30+
31+
printf("Random uppercase letter: %c\n", rand_char);
32+
33+
/* Store random letter in array of chars */
34+
s1[i] = rand_char;
35+
}
36+
37+
/* Null-terminating string */
38+
s1[S1LENGTH] = '0円';
39+
40+
return s1;
41+
}
42+
43+
/* Returns nullptr upon receiving invalid input */
44+
char* generateS2(void) {
45+
/* Get the user string */
46+
printf("Enter a string of uppercase letters 'A' - 'Z'\n");
47+
printf("Must contain between %d and %d characters: ", S2LENGTHMIN, S2LENGTHMAX);
48+
49+
int numCharacters = 0; /* Keep track of num characters */
50+
int invalidCharacterDetected = 0; /* Flag to keep track of valid characters */
51+
int hasExceededCharacterLimit = 0; /* Flag to keep track of string length */
52+
char currentCharacter; /* Keep track of current character being processed */
53+
54+
/* Allocate enough memory to store array of chars */
55+
char* s2 = malloc((S2LENGTHMAX + 1) * sizeof(char));
56+
57+
/* Process input while:
58+
/* 1. There are still characters in the input buffer,
59+
/* 2. We haven't encountered an invalid character, AND
60+
/* 3. The number of characters does not exceed the S2LENGTHMAX limit */
61+
while ((currentCharacter = getchar()) != EOF) {
62+
++numCharacters; /* Increment character count */
63+
64+
/* If we've already encountered an invalid character, simply increment the character counter */
65+
if (!invalidCharacterDetected) {
66+
/* Now we check to see if we've exceeded the character limit */
67+
hasExceededCharacterLimit = (numCharacters > S2LENGTHMAX);
68+
69+
if (!hasExceededCharacterLimit) {
70+
/* Finally, we check for invalid character */
71+
if (isUpperCaseLetter(currentCharacter)) {
72+
s2[numCharacters - 1] = currentCharacter;
73+
}
74+
else {
75+
invalidCharacterDetected = 1;
76+
}
77+
}
78+
}
79+
}
80+
81+
/* Check if user input meets min string length requirement */
82+
int isLessThanRequiredLength = (numCharacters > S2LENGTHMIN);
83+
84+
/* Print appropriate error messages */
85+
if (invalidCharacterDetected) {
86+
printf("Error: Invalid characters detected. Input must contain ONLY uppercase alphabetical characters\n");
87+
}
88+
89+
if (hasExceededCharacterLimit || isLessThanRequiredLength) {
90+
printf("Error: Invalid string length. Input must be between %d and %d characters long\n", S2LENGTHMIN, S2LENGTHMAX);
91+
}
92+
93+
/* If any of the error flags were raised we need to deallocate memory */
94+
if (invalidCharacterDetected || hasExceededCharacterLimit || isLessThanRequiredLength) {
95+
//for (char* entry : )
96+
}
97+
else {
98+
/* Add null terminating character to signal end of string */
99+
}
100+
}
101+
102+
int isUpperCaseLetter(int iochar) {
103+
return (iochar >= 'A' && iochar <= 'Z');
104+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /