How to change the content of argv in C? [closed] - c

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 9 years ago.
I have been trying to search around the net but still couldn't find anything about it
I would like to do something like increase the file name,
int main(int argc , char *argv[]){
char charArray = {argv[1]};
char * string[] = {"-0001.c"};
int i = 0;
strcat(charArray[0] , string[0]);
puts(charArray[0]);
return 0;
}
so as expected, I execute it as
./file test
the output is
test-0001.c
what if I want to increase the number?
so that it can print out the following
test-0001.c
test-0002.c
test-0003.c
by using while loop?

Your program as currently written should not currently work. Try turning on warnings and fixing them. (with the compiler flags -Wall -Wextra -pedantic for GCC or clang)
That said, I'd use a variable-length array and sprintf:
for(int counter = 1; counter < 10000; counter++) {
char filename[strlen(argv[1]) + 8];
sprintf(filename, "%s-%04d.c", argv[1], counter);
// do something with filename
}

Related

C while loop not executing [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 9 years ago.
I'm learning c and I can't figure out the problem with this code:
#include <stdio.h>
int main(){
int i = 0;
while(i > 10){
printf("hello");
i++;
}
getch();
return 0;
}
I don't get any errors and have tried running it on codeblocks and wxdev c++. So is there something I'm doing wrong. Thanks.
You set
i = 0;
and then test
i > 10
which is always false.
You might want
while (i < 10)
instead.
I is not greater than 10 so it doesnt meet the requirement to enter the while loop
while(i > 10){
...but i is 0 so it's false and skips.
You probably meant to instead write;
while(i < 10) {
Reason: i is not greater than 10.

C to MIPS convert [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 9 years ago.
Can anyone help me convert the C code below to MIPS code? I'm supposed to use recursion and get 21 - 2 as the final answer. Thanks!
/*
x is a pointer to a linked list node and is not null.
Return the min value stored in the linked list.
Assume each node is stored in memory as an int (value) followed by a pointer to the next node (next), each a word wide.
You must write it with recursion. */
int findMin(node *x) {
if(x->next == NULL)
return x->value;
else {
int min = findMin(x->next);
if(min < x->value)
return min;
else
return x->value;
}
}
Here you are:
mips-linux-gnu-gcc -S -o foo.asm foo.c

How to convert a string containing a hex character code to the character value? [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
I have an array of chars "0x55".
What I want to do is convert it to a char which is going to be U (because ASCII 0x55 = U).
So how to do this conversion?
#include <windows.h>
int main()
{
array[] = "0x55"
char test;
**// I want to move the string to that test to be one character which is U**
}
Any suggestions?
I think this is what you are after:
int main(int argc,char**argv)
{
char array[] = "0x55";
int value;
char test;
sscanf(array,"%x",&value);
test = value;
return 0;
}
In C++, I would code it a little differently, but this seems more like a C question.

Command-line options in C [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
I would like to create a C program that accepts an argument of the form
-aK
where K is some integer from 0-9.
How would I parse/specify this option?
You might want to check out getopt and/or getopt_long.
a simple requirement like this can be solved with getopt.
Also you can do this:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch, a;
int d;
if(argc == 1) return;
if(argc == 2){
if(strlen(argv[1]) > 2){
sscanf(argv[1],"%c%c%d",&ch,&a,&d);
if(ch == '-' && a == 'a'){
printf("%d is your number",d);
}
}
}
return 0;
}

Shortest C code to reverse a string [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 12 years ago.
Not counting the function signature (just the body) can anybody produce C code shorter than this function that will reverse a string and return the result as a pointer to the reversed string.. (not using a string reverse library function either)?
char * reverse_str(char * s)
{
char c,*f=s,*p=s;while(*p)p++;while(--p>s){c=*p;*p=*s;*s++=c;}return f;
}
not much longer, but it works.
#include <string.h>
/* precondition: s!=const && s!=NULL && *s!='\0' */
char *mystrrev(char *s)
{
char *a=s,*e=s+strlen(s)-1;
while( a<e )
{
char c=*a;
*a++=*e;
*e--=c;
}
return s;
}

Resources