我的意圖是使用命令列來讀取輸入并將其存盤到一個陣列中,并修改陣列的字符。如果字符是'1',就把它變成'0',反之亦然。我成功地將輸入存盤到一個陣列中,但未能修改陣列中的字符。如果我把000000000000000000000000000(32bits)放入我的程式中,輸出并沒有改變。
#include <stdlib.h>/span>
#include <string.h>
int main(int argc, char *argv[]) /span> {
char *a = argv[argc-1] 。
char arr[33] 。
size_t length = strlen(a)。
for(size_t i=0; i< length;i ) {
arr[i]=a[i]。
}
for(int j=0; j<32; j ) {
if(arr[j]=='0'/span>) {
arr[j]='1'。
}
if(arr[j]=='1') {
arr[j]='0'。
}
}
for(int k=0;k<32; k ) {
printf("%c", arr[k])。
}
uj5u.com熱心網友回復:
要復制字串,你也需要復制空字符。
size_t length = strlen(a)。
14 for(size_t i=0; i<=length; i ){
15 arr[i]=a[i];
但你不需要兩次遍歷字串
size_t i=0。
while((arr[i]=a[i]))。
你的if是錯誤的。它應該是
if(arr[j]=='0') arr[j]='1';
else arr[j]='0';
uj5u.com熱心網友回復:
你忘了在這部分代碼中給出一個else if條件。
for(int j=0; j<32; j ) {
if(arr[j]=='0'/span>) {
arr[j]='1'。
}
else if(arr[j]=='1') { //this part should be else if
arr[j]='0'。
}
}
在你的代碼中,對于0的值,它改變為1。但是對于另一個if條件,值又變成了0。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/322405.html
標籤:
